Erinevus lehekülje "Основы программирования на языке Java" redaktsioonide vahel
(ei näidata sama kasutaja 111 vahepealset redaktsiooni) | |||
9. rida: | 9. rida: | ||
Материалы курса предыдущих лет (на эстонском языке): [[Programmeerimise põhikursus Javas (2014)]], [http://www.lambda.ee/wiki/ITI0011 2013], [http://www.lambda.ee/wiki/ITI0011-S12 2012]<br> | Материалы курса предыдущих лет (на эстонском языке): [[Programmeerimise põhikursus Javas (2014)]], [http://www.lambda.ee/wiki/ITI0011 2013], [http://www.lambda.ee/wiki/ITI0011-S12 2012]<br> | ||
+ | Java Programmeerimise Põhikursus (eesti keeles) asub siin: [[ITI0011]]<br/> | ||
<br> | <br> | ||
[https://ois.ttu.ee/portal/page?_pageid=35,428610&_dad=portal&_schema=PORTAL&p_msg=&p_public=1&p_what=1&p_lang=EN&p_open_node2=&p_session_id=5266247&p_id=100805&p_mode=1&p_pageid=OKM_AINE_WEB_OTSING&n_disp_result=1&n_export=0&_init=1&_nextsearch=1&_nextorder=1&_orfn_1=AINER_KOOD&_ordi_1=ASC&_disp_ainer_kood=1&_where_ainer_kood=&_ainer_kood=iti8510&_disp_ainer_nimetus=1&_where_ainer_nimetus=&_ainer_nimetus=&_disp_ainer_nimetus_en=1&_where_ainer_nimetus_en=&_ainer_nimetus_en=&_disp_ainer_eap=1&_disp_ainer_opetsem=1&_vformaat=VFORMAAT_HTML&n_lov_offset=1&n_row_count=&n_row_pos= Информация по предмету в ÕIS-е] | [https://ois.ttu.ee/portal/page?_pageid=35,428610&_dad=portal&_schema=PORTAL&p_msg=&p_public=1&p_what=1&p_lang=EN&p_open_node2=&p_session_id=5266247&p_id=100805&p_mode=1&p_pageid=OKM_AINE_WEB_OTSING&n_disp_result=1&n_export=0&_init=1&_nextsearch=1&_nextorder=1&_orfn_1=AINER_KOOD&_ordi_1=ASC&_disp_ainer_kood=1&_where_ainer_kood=&_ainer_kood=iti8510&_disp_ainer_nimetus=1&_where_ainer_nimetus=&_ainer_nimetus=&_disp_ainer_nimetus_en=1&_where_ainer_nimetus_en=&_ainer_nimetus_en=&_disp_ainer_eap=1&_disp_ainer_opetsem=1&_vformaat=VFORMAAT_HTML&n_lov_offset=1&n_row_count=&n_row_pos= Информация по предмету в ÕIS-е] | ||
14. rida: | 15. rida: | ||
</tr> | </tr> | ||
</table> | </table> | ||
+ | |||
+ | == Экзамен == | ||
+ | |||
+ | === Критерии допуска на экзамен === | ||
+ | |||
+ | * Минимально 20 баллов за работу в классе (упражнения, домашние задания) | ||
+ | * Минимально два защищенных на положительную оценку домашних задания (например, HW1 и HW2). | ||
+ | |||
+ | === Экзамен === | ||
+ | |||
+ | * Экзаменационная работа максимально оценивается в 20 баллов. | ||
+ | * Следует взять с собой документ, удостоверяющий личность (на котором есть фотография). | ||
+ | * Экзамен сотоит из двух частей - теоретической и практической. | ||
+ | * Экзамен начинается с теоретической части, на которую отводится 1.5 часа и состоит из ответов на вопросы на бумаге. | ||
+ | * Теоретическая часть максимально оценивается в 30 баллов. | ||
+ | * После теоретической части перерыв 30 минут, после перерыва экзамен продолжается практической частью. | ||
+ | * На практическую часть также отводится 1.5 часа. Следует решить задания на компьютере. | ||
+ | * Практическая часть также максимально оценивается в 30 баллов. | ||
+ | |||
+ | === Время и место проведения экзамена === | ||
+ | |||
+ | Даты проведения экзамена следующие: | ||
+ | * 28. мая 10:00 - 11:30 аудитория ICT-A2, 12:00 - 13:30 аудитория ICT-401 | ||
+ | * 28. мая 12:00 - 13:30 аудитория ICT-A2, 14:00 - 15:30 аудитория ICT-401 | ||
+ | * 28. мая 14:00 - 15:30 аудитория ICT-A1, 16:00 - 17:30 аудитория ICT-401 | ||
+ | * 4. июня 10:00 - 11:30 аудитория ICT-A1, 12:00 - 13:30 аудитория ICT-401 | ||
+ | * 4. июня 12:00 - 13:30 аудитория ICT-A1, 14:00 - 15:30 аудитория ICT-401 | ||
+ | * 4. июня 14:00 - 15:30 аудитория ICT-A1, 16:00 - 17:30 аудитория ICT-401 | ||
+ | |||
+ | Время экзамена каждому студенту назначено индивидуально на основа студенческого кода. Можете узнать во сколько начнется ваш экзамен в таблице https://docs.google.com/spreadsheets/d/1L4pZWWDOJ_qMf7LPvK9263Bq7WDDLl0R_fVUfw02yIA/pubhtml в графе "eksami algus" (начало экзамена). Выбор даты остается за студентом. | ||
+ | |||
+ | Дата переэкзаменовки: | ||
+ | 17. июня 12:00 письменная часть в ICT-A2, 14:00 в компьютерном классе ICT-401 | ||
+ | |||
+ | === Консультация === | ||
+ | Консультация будет проходить: | ||
+ | * 27. мая в 15:00 в аудитории ICT-404. | ||
+ | * 16 июня в 14:00 в аудитории ICT-404. Регистрация обязательна: http://doodle.com/a38t8d44b8muqpfa | ||
+ | |||
+ | == Результаты == | ||
+ | |||
+ | С текущими результатами можно ознакомиться здесь: https://docs.google.com/spreadsheets/d/1L4pZWWDOJ_qMf7LPvK9263Bq7WDDLl0R_fVUfw02yIA/pubhtml | ||
+ | |||
+ | == Консультация == | ||
+ | |||
+ | Ссылка на опросник http://doodle.com/wccvwxe8h4pngm95 | ||
== Объявления == | == Объявления == | ||
+ | |||
+ | '''Продление срока сдачи работ EX01 - EX04''' | ||
+ | |||
+ | В связи с тем, что в начале семестра у студентов наблюдались проблемы с загрузкой работ с Git сервером, также технические проблемы Git сервера (у студентов не было аккаунтов), а также технические проблемы в среде, в которой студенты могут оценивать работы друг друга, мы решили дать возможность студентам доработать свои решения и загрузить их на сервер Git до следующей пятницы - '''2/27/2015'''. Это также возможность для студентов оценить работы друг друга, если они этого еще не сделали. | ||
== Расписание занятий и преподаватели == | == Расписание занятий и преподаватели == | ||
Предмет координирует: Ago Luberg<br> | Предмет координирует: Ago Luberg<br> | ||
− | Контакт: ago.luberg | + | Контакт: ago.luberg [at] ttu.ee, TTÜ ICT-423<br> |
Декларировать предмет на имя Ago Luberg. Структура и содержание предмета одинаковы, независимо от преподавателя или языка на котором проводятся занятия. | Декларировать предмет на имя Ago Luberg. Структура и содержание предмета одинаковы, независимо от преподавателя или языка на котором проводятся занятия. | ||
34. rida: | 85. rida: | ||
Консультации:<br> | Консультации:<br> | ||
− | Ago Luberg: Вторник 12:00 (после практикума), следует заранее зарегистрироваться по емейлу (ago.luberg | + | Ago Luberg: Вторник 12:00 (после практикума), следует заранее зарегистрироваться по емейлу (ago.luberg [at] ttu.ee)<br> |
− | Aleksandr Lenin: следует заранее зарегистрироваться по емейлу (aleksandr.lenin | + | Aleksandr Lenin: следует заранее зарегистрироваться по емейлу (aleksandr.lenin [at] ttu.ee)<br> |
− | Gert Kanter: следует заранее зарегистрироваться по емейлу (gert | + | Gert Kanter: следует заранее зарегистрироваться по емейлу (gert [at] cs.ttu.ee) |
<br><br> | <br><br> | ||
− | == Домашние задания и сроки | + | == Домашние задания и сроки == |
− | * | + | * [[ITI0011RUS:Matches|Игра "спички"]], защита 26 февраля. |
− | * | + | * [[ITI0011RUS:Tweets|Tweets]], защита 8-9 апреля. [[ITI0011RUS:Tweets:Grading|Критерии оценивания]]. |
− | + | * [[ITI0011:Mull|JavaFX]], оконные приложения, защита 5 мая. | |
− | + | * Gomoku, AI, защита 21 мая. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | == Организация предмета == | |
− | + | Организация предмета подробно описана [[ITI0011RUS_Structure|здесь]].<br/> | |
+ | Требования к упражнениям заданиям описаны [[ITI0011RUS_Practice|здесь]].<br/> | ||
− | + | == Материалы == | |
− | + | <dl> | |
− | + | <dt>1 неделя: | |
− | + | <dd>[[Meedia:Intro.pdf|Занятие 1: Организация предмета]] | |
− | + | <dd>[[Meedia:java_development.pdf|Занятие 1: Платформа Java. Среда разработки]] | |
− | + | <dd>[[ITI0011RUS:занятие_02|Занятие 2: Типы данных. Переменные.]] | |
+ | <dd> Задачи для самостоятельного решения: [http://codingbat.com/java/Warmup-1 CodingBat - разогрев часть 1]. | ||
+ | <dd> Задачи для самостоятельного решения: [http://codingbat.com/java/Warmup-2 CodingBat - разогрев часть 2]. | ||
+ | <dd>[[ITI0011RUS:упражнение_01|Упражнение 1]]. Срок сдачи 11 февраля. | ||
+ | <dt>2 неделя: | ||
+ | <dd> [[ITI0011RUS:Arrays|Занятие 3: Массивы]] | ||
+ | <dd> [[ITI0011RUS:Strings|Занятие 4: Строки]] | ||
+ | <dd> Занятие 4: Циклы. TBA. | ||
+ | <dd> Задачи для самостоятельного решения: [http://codingbat.com/java/Array-1 CodingBat - массивы]. | ||
+ | <dd> Задачи для самостоятельного решения: [http://codingbat.com/java/String-1 CodingBat - строки]. | ||
+ | <dd>[[ITI0011RUS:упражнение_02|Упражнение 2]]. Срок сдачи 12-е февраля. | ||
+ | <dd>[[ITI0011RUS:упражнение_03|Упражнение 3]]. Срок сдачи 18-е февраля. | ||
+ | <dt>3 неделя: | ||
+ | <dd> [[ITI0011RUS:task_04|Упражнение 4]]. Срок сдачи 24-е февраля. | ||
+ | <dd> [[ITI0011RUS:IO|Занятие 5: Операции ввода-вывода]] | ||
+ | <dd> [[ITI0011RUS:Exceptions|Занятие 6: Обработка исключительных ситуаций]] | ||
+ | <dt> 4 неделя: | ||
+ | <dd> Занятие 7: контейнеры. TBA. | ||
+ | <dd> [[ITI0011RUS:practice_template|Занятие 7: Шаблон для занятия в классе]]. | ||
+ | <dd> [[ITI0011RUS:task_05|Упражнение 5]]. Срок сдачи 4-е марта. | ||
+ | <dd> Занятие 8: Защита домашних работ. | ||
+ | <dt> 5 неделя: | ||
+ | <dd> Занятие 9: Контрольная работа. Защита домашних работ. | ||
+ | <dd> Занятие 10: Чтение/запись файлов. TBA | ||
+ | <dt> 6 неделя: | ||
+ | <dd> [[ITI0011RUS:Objects|Занятие 11: Объекты]]. | ||
+ | <dd> [[ITI0011RUS:Objects|Занятие 12: Наследование, полиморфизм]]. | ||
+ | <dd> [[ITI0011RUS:task_06|Упражнение 6]]. Срок сдачи 12 марта. | ||
+ | <dd> [[ITI0011RUS:task_07|Упражнение 7]]. Срок сдачи 18 марта. | ||
+ | <dt> 7 неделя: | ||
+ | <dd> [[ITI0011RUS:Objects|Занятие 13: Aбстракиный класс, интерфейсы]]. | ||
+ | <dd> Занятие 14: Jar архивы. Отладка. | ||
+ | <dd> Абстрактные классы и методы. http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html | ||
+ | <dd> Интерфейсы http://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html | ||
+ | <dd> [[ITI0011RUS:task_08|Упражнение 8]]. Срок сдачи 25 марта. | ||
+ | <dd> [[ITI0011RUS:task_09|Упражнение 9]]. Срок сдачи 25 марта. | ||
+ | <dt> 8 неделя: | ||
+ | <dd> [[ITI0011RUS:task_10|Упражнение 10]]. Срок сдачи 26 марта. | ||
+ | <dd> [[ITI0011RUS:task_10_Sample|Упражнение 10 (пример).]] | ||
+ | <dt> 9 неделя: | ||
+ | <dd> [[ITI0011RUS:task11|Упражнение 11]]. Срок сдачи 2 апреля. | ||
+ | <dd> [[ITI0011RUS:task12|Упражнение 12]]. Срок сдачи 8 апреля. | ||
+ | <dt> 10 неделя: | ||
+ | <dd> [[ITI0011RUS:JavaFX|Занятие 21: JavaFX]]. | ||
+ | <dd> [[ITI0011RUS:task13|Упражнение 13]]. Срок сдачи 15 апреля. | ||
+ | <dd> [[ITI0011RUS:javafx_ex|JavaFX Пример]]. | ||
+ | <dt> 11 неделя: | ||
+ | <dd> [[ITI0011RUS:task14|Упражнение 14]]. Срок сдачи 22 апреля. | ||
+ | <dd> [[ITI0011RUS:task15|Упражнение 15]]. Срок сдачи 22 апреля. | ||
+ | <dt> 12 неделя: | ||
+ | <dd> Android | ||
+ | <dt> 13 неделя: | ||
+ | <dd> Рекурсия | ||
+ | <dd> http://codingbat.com/java/Recursion-1 | ||
+ | <dd> http://codingbat.com/java/Recursion-2 | ||
+ | <dt> 14 неделя: | ||
+ | <dd> [[ITI0011RUS:timelinedemo|TimelineDemo]] | ||
+ | <dt> 15 неделя: | ||
+ | <dd> [[ITI0011RUS:minimax|Minimax]] | ||
+ | <dd> [[ITI0011RUS:Gomoku|Gomoku]] | ||
+ | <dt> 16 неделя: | ||
+ | <dd> TBA | ||
+ | </dl> | ||
− | + | == Прочие полезные материалы == | |
− | + | * '''Объявления и важная информация: http://groups.google.com/group/iti0011''' | |
− | * | + | * CodingBat (хороший ресурс, где можно потренироваться в решении заданий): http://codingbat.com/java |
− | * | + | * Среда оценивания упражнений: https://cs.ttu.ee/apps/java15/ |
− | * | + | * Материалы Oracle: http://docs.oracle.com/javase/tutorial/ |
− | * | + | * Thinking in Java, Bruce Eckel: http://www.mindviewinc.com/Books/TIJ4/ |
− | * | + | * Руководство по системе контроля версий Git https://courses.cs.ttu.ee/pages/ITI0011:git |
− | * | + | * Руководство по настройке Checkstyle плагина https://courses.cs.ttu.ee/pages/ITI0011:Checkstyle |
− | == | + | == Литература == |
− | + | Бесплатный электронный учебник: David Eck, Introduction to Programming Using Java , version 7.0, 2014 | |
− | + | (http://math.hws.edu/javanotes/ vt ka http://math.hws.edu/eck/cs124/downloads/javanotes7.pdf) |
Viimane redaktsioon: 9. juuni 2015, kell 06:47
Код предмета: ITI0011 Материалы курса предыдущих лет (на эстонском языке): Programmeerimise põhikursus Javas (2014), 2013, 2012 |
Экзамен
Критерии допуска на экзамен
- Минимально 20 баллов за работу в классе (упражнения, домашние задания)
- Минимально два защищенных на положительную оценку домашних задания (например, HW1 и HW2).
Экзамен
- Экзаменационная работа максимально оценивается в 20 баллов.
- Следует взять с собой документ, удостоверяющий личность (на котором есть фотография).
- Экзамен сотоит из двух частей - теоретической и практической.
- Экзамен начинается с теоретической части, на которую отводится 1.5 часа и состоит из ответов на вопросы на бумаге.
- Теоретическая часть максимально оценивается в 30 баллов.
- После теоретической части перерыв 30 минут, после перерыва экзамен продолжается практической частью.
- На практическую часть также отводится 1.5 часа. Следует решить задания на компьютере.
- Практическая часть также максимально оценивается в 30 баллов.
Время и место проведения экзамена
Даты проведения экзамена следующие:
- 28. мая 10:00 - 11:30 аудитория ICT-A2, 12:00 - 13:30 аудитория ICT-401
- 28. мая 12:00 - 13:30 аудитория ICT-A2, 14:00 - 15:30 аудитория ICT-401
- 28. мая 14:00 - 15:30 аудитория ICT-A1, 16:00 - 17:30 аудитория ICT-401
- 4. июня 10:00 - 11:30 аудитория ICT-A1, 12:00 - 13:30 аудитория ICT-401
- 4. июня 12:00 - 13:30 аудитория ICT-A1, 14:00 - 15:30 аудитория ICT-401
- 4. июня 14:00 - 15:30 аудитория ICT-A1, 16:00 - 17:30 аудитория ICT-401
Время экзамена каждому студенту назначено индивидуально на основа студенческого кода. Можете узнать во сколько начнется ваш экзамен в таблице https://docs.google.com/spreadsheets/d/1L4pZWWDOJ_qMf7LPvK9263Bq7WDDLl0R_fVUfw02yIA/pubhtml в графе "eksami algus" (начало экзамена). Выбор даты остается за студентом.
Дата переэкзаменовки: 17. июня 12:00 письменная часть в ICT-A2, 14:00 в компьютерном классе ICT-401
Консультация
Консультация будет проходить:
- 27. мая в 15:00 в аудитории ICT-404.
- 16 июня в 14:00 в аудитории ICT-404. Регистрация обязательна: http://doodle.com/a38t8d44b8muqpfa
Результаты
С текущими результатами можно ознакомиться здесь: https://docs.google.com/spreadsheets/d/1L4pZWWDOJ_qMf7LPvK9263Bq7WDDLl0R_fVUfw02yIA/pubhtml
Консультация
Ссылка на опросник http://doodle.com/wccvwxe8h4pngm95
Объявления
Продление срока сдачи работ EX01 - EX04
В связи с тем, что в начале семестра у студентов наблюдались проблемы с загрузкой работ с Git сервером, также технические проблемы Git сервера (у студентов не было аккаунтов), а также технические проблемы в среде, в которой студенты могут оценивать работы друг друга, мы решили дать возможность студентам доработать свои решения и загрузить их на сервер Git до следующей пятницы - 2/27/2015. Это также возможность для студентов оценить работы друг друга, если они этого еще не сделали.
Расписание занятий и преподаватели
Предмет координирует: Ago Luberg
Контакт: ago.luberg [at] ttu.ee, TTÜ ICT-423
Декларировать предмет на имя Ago Luberg. Структура и содержание предмета одинаковы, независимо от преподавателя или языка на котором проводятся занятия.
Расписание занятий:
IAPB21, IAPB22: Вторник 8:00 (ICT-501), Пятница 10:00 (ICT-401)
IAPB23, IAPB24: Вторник 15:45 (ICT-401), Четверг 10:00 (ICT-501)
IAPB25: Вторник 10:00 (ICT-404), Четверг 12:00 (ICT-402)
IAPB27, IAPB28 (на русском языке): Среда 8:00 (ICT-402), Четверг 10:00 (ICT-403)
Преподаватели: Gert Kanter, Evelin Halling, Aleksandr Lenin (практикумы на русском языке).
Ассистенты: Artur Luik, Maanus Leesmet, Rannar Allorg, Anton Charnamord (практикумы на русском языке), Bogdan Yanovich (практикумы на русском языке).
Консультации:
Ago Luberg: Вторник 12:00 (после практикума), следует заранее зарегистрироваться по емейлу (ago.luberg [at] ttu.ee)
Aleksandr Lenin: следует заранее зарегистрироваться по емейлу (aleksandr.lenin [at] ttu.ee)
Gert Kanter: следует заранее зарегистрироваться по емейлу (gert [at] cs.ttu.ee)
Домашние задания и сроки
- Игра "спички", защита 26 февраля.
- Tweets, защита 8-9 апреля. Критерии оценивания.
- JavaFX, оконные приложения, защита 5 мая.
- Gomoku, AI, защита 21 мая.
Организация предмета
Организация предмета подробно описана здесь.
Требования к упражнениям заданиям описаны здесь.
Материалы
- 1 неделя:
- Занятие 1: Организация предмета
- Занятие 1: Платформа Java. Среда разработки
- Занятие 2: Типы данных. Переменные.
- Задачи для самостоятельного решения: CodingBat - разогрев часть 1.
- Задачи для самостоятельного решения: CodingBat - разогрев часть 2.
- Упражнение 1. Срок сдачи 11 февраля.
- 2 неделя:
- Занятие 3: Массивы
- Занятие 4: Строки
- Занятие 4: Циклы. TBA.
- Задачи для самостоятельного решения: CodingBat - массивы.
- Задачи для самостоятельного решения: CodingBat - строки.
- Упражнение 2. Срок сдачи 12-е февраля.
- Упражнение 3. Срок сдачи 18-е февраля.
- 3 неделя:
- Упражнение 4. Срок сдачи 24-е февраля.
- Занятие 5: Операции ввода-вывода
- Занятие 6: Обработка исключительных ситуаций
- 4 неделя:
- Занятие 7: контейнеры. TBA.
- Занятие 7: Шаблон для занятия в классе.
- Упражнение 5. Срок сдачи 4-е марта.
- Занятие 8: Защита домашних работ.
- 5 неделя:
- Занятие 9: Контрольная работа. Защита домашних работ.
- Занятие 10: Чтение/запись файлов. TBA
- 6 неделя:
- Занятие 11: Объекты.
- Занятие 12: Наследование, полиморфизм.
- Упражнение 6. Срок сдачи 12 марта.
- Упражнение 7. Срок сдачи 18 марта.
- 7 неделя:
- Занятие 13: Aбстракиный класс, интерфейсы.
- Занятие 14: Jar архивы. Отладка.
- Абстрактные классы и методы. http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html
- Интерфейсы http://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html
- Упражнение 8. Срок сдачи 25 марта.
- Упражнение 9. Срок сдачи 25 марта.
- 8 неделя:
- Упражнение 10. Срок сдачи 26 марта.
- Упражнение 10 (пример).
- 9 неделя:
- Упражнение 11. Срок сдачи 2 апреля.
- Упражнение 12. Срок сдачи 8 апреля.
- 10 неделя:
- Занятие 21: JavaFX.
- Упражнение 13. Срок сдачи 15 апреля.
- JavaFX Пример.
- 11 неделя:
- Упражнение 14. Срок сдачи 22 апреля.
- Упражнение 15. Срок сдачи 22 апреля.
- 12 неделя:
- Android
- 13 неделя:
- Рекурсия
- http://codingbat.com/java/Recursion-1
- http://codingbat.com/java/Recursion-2
- 14 неделя:
- TimelineDemo
- 15 неделя:
- Minimax
- Gomoku
- 16 неделя:
- TBA
Прочие полезные материалы
- Объявления и важная информация: http://groups.google.com/group/iti0011
- CodingBat (хороший ресурс, где можно потренироваться в решении заданий): http://codingbat.com/java
- Среда оценивания упражнений: https://cs.ttu.ee/apps/java15/
- Материалы Oracle: http://docs.oracle.com/javase/tutorial/
- Thinking in Java, Bruce Eckel: http://www.mindviewinc.com/Books/TIJ4/
- Руководство по системе контроля версий Git https://courses.cs.ttu.ee/pages/ITI0011:git
- Руководство по настройке Checkstyle плагина https://courses.cs.ttu.ee/pages/ITI0011:Checkstyle
Литература
Бесплатный электронный учебник: David Eck, Introduction to Programming Using Java , version 7.0, 2014
(http://math.hws.edu/javanotes/ vt ka http://math.hws.edu/eck/cs124/downloads/javanotes7.pdf)