almost full book

This commit is contained in:
Ivan I. Ovchinnikov 2023-01-19 19:10:17 +03:00
parent 88a759b9ca
commit 6f0bcb21c6
11 changed files with 74 additions and 83 deletions

Binary file not shown.

BIN
build/jtc3-03-workshop.pdf Normal file

Binary file not shown.

View File

@ -35,11 +35,12 @@
\chapter{Java Development Kit}
%\subfile{jtd6-11a}
\newpage
\appendix
\setcounter{secnumdepth}{5}
\printnomenclature[40mm]
\chapter{Семинары}
\chapter*{Семинары}
\addcontentsline{toc}{chapter}{Семинары}
\renewcommand{\thesection}{\Asbuk{section}}
\subfile{jtc1-01-workshop}
\newpage

View File

@ -2,7 +2,7 @@
\begin{document}
\pagestyle{plain}
\tableofcontents
%\tableofcontents
\section{Платформа: история и окружение}
\subsection{В этом разделе}
Краткая история (причины возникновения); инструментарий, выбор версии; CLI; структура проекта; документирование; некоторые интересные способы сборки проектов.
@ -466,6 +466,7 @@ Docker-образ и, как следствие, Docker-контейнеры в
\item *Создать два Docker-образа. Один должен компилировать Java-проект обратно в папку на компьютере подьзователя, а второй забирать скомпилированные классы и исполнять их.
\end{itemize}
\printnomenclature[40mm]
% \newpage
% \printnomenclature[40mm]
\end{document}

View File

@ -1,10 +1,9 @@
\documentclass[j-spec.tex]{subfiles}
\begin{document}
%\setcounter{tocdepth}{3}
\setcounter{section}{1}
\pagestyle{plain}
\tableofcontents
%\tableofcontents
\section{Специализация: данные и функции}
\subsection{В предыдущем разделе}
\begin{itemize}
@ -689,7 +688,7 @@ Constare - (лат. стоять твёрдо). Константность эт
\item Написать метод, которому можно передать в качестве аргумента массив, состоящий строго из единиц и нулей (целые числа типа \code{int}). Метод должен заменить единицы в массиве на нули, а нули на единицы и не содержать ветвлений. Написать как можно больше вариантов метода.
\end{enumerate}
\newpage
\printnomenclature[40mm]
% \newpage
% \printnomenclature[40mm]
\end{document}

View File

@ -5,7 +5,7 @@
\setlength{\columnsep}{22pt}
\pagestyle{plain}
\sloppy
\tableofcontents
%\tableofcontents
\section{Специализация: ООП}
\subsection{В предыдущем разделе}
Будет рассмотрен базовый функционал языка, то есть основная встроенная функциональность, такая как математические операторы, условия, циклы, бинарные операторы. Далее способы хранения и представления данных в Java, и в конце способы манипуляции данными, то есть функции (в терминах языка называющиеся методами).
@ -1187,7 +1187,7 @@ public class Cat extends Animal {
\item * Добавить механизм, создающий 25\% разброс значений каждого ограничения для каждого объекта.
\end{enumerate}
\newpage
\printnomenclature[40mm]
% \newpage
% \printnomenclature[40mm]
\end{document}

View File

@ -56,7 +56,7 @@
\end{spreadtab}
\subsection{Подробности}
\subsubsection{Организационный момент}
\subsubsection*{Организационный момент}
\begin{itemize}
\item \textbf{Цель этапа:} Позитивно начать урок, создать комфортную среду для обучения.
\item \textbf{Тайминг:} 3-5 минут.
@ -68,7 +68,7 @@
\end{itemize}
\end{itemize}
\subsubsection{Quiz}
\subsubsection*{Quiz}
\begin{itemize}
\item \textbf{Цель этапа:} Вовлечение аудитории в обратную связь.
\item \textbf{Тайминг:} 5-7 минут (4 вопроса, по минуте на ответ).
@ -118,7 +118,7 @@
\end{enumerate}
\end{itemize}
\subsubsection{Рассмотрение ДЗ}
\subsubsection*{Рассмотрение ДЗ}
\begin{itemize}
\item \textbf{Цель этапа:} Пояснить не очевидные моменты в формулировке ДЗ с лекции, синхронизировать прочитанный на лекции материал к началу семинара.
\item \textbf{Тайминг:} 15-20 минут.
@ -131,11 +131,11 @@
\begin{itemize}
\item Написать класс кота так, чтобы каждому объекту кота присваивался личный порядковый целочисленный номер;
\textbf{Вариант решения в приложении \ref{appendix:hw1}}
\textbf{Вариант решения в приложении \ref{appendix:sem3-hw1}}
\item Написать классы кота и собаки, наследники животного. У всех есть три действия: бежать, плыть, прыгать. Действия принимают размер препятствия и возвращают булев результат. Три ограничения: высота прыжка, расстояние, которое животное может пробежать, расстояние, которое животное может проплыть. Следует учесть, что коты не любят воду.
\textbf{Вариант решения в приложении \ref{appendix:hw2}}
\textbf{Вариант решения в приложении \ref{appendix:sem3-hw2}}
\item Добавить механизм, создающий 25\% разброс значений каждого ограничения для каждого объекта.
@ -157,7 +157,7 @@
\end{itemize}
\end{itemize}
\subsubsection{Вопросы и ответы}
\subsubsection*{Вопросы и ответы}
\begin{itemize}
\item \textbf{Ценность этапа} Вовлечение аудитории в обратную связь, пояснение неочевидных моментов в материале лекции и другой проделанной работе.
\item \textbf{Тайминг} 5-15 минут
@ -171,7 +171,7 @@
\end{itemize}
\end{itemize}
\subsubsection{Задание 1}
\subsubsection*{Задание 1}
\begin{itemize}
\item \textbf{Ценность этапа} Создание класса и объекта.
\item \textbf{Тайминг} 5 минут.
@ -184,7 +184,7 @@
\begin{itemize}
\item Создать класс "Сотрудник" с полями: ФИО, должность, телефон, зарплата, возраст;
\textbf{Вариант исполнения класса в приложении \ref{appendix:ct1}}
\textbf{Вариант исполнения класса в приложении \ref{appendix:sem3-ct1}}
\begin{lstlisting}[language=Java,style=JCodeStyle,caption={Создание объекта класса}]
Employee employeeIvan = new Employee("Ivan", "Igorevich",
@ -194,7 +194,7 @@ Employee employeeIvan = new Employee("Ivan", "Igorevich",
\end{itemize}
\end{itemize}
\subsubsection{Задание 2}
\subsubsection*{Задание 2}
\begin{itemize}
\item \textbf{Ценность этапа} Манипуляция информацией об объекте.
\item \textbf{Тайминг} 10 минут.
@ -259,7 +259,7 @@ Employee employeeIvan = new Employee("Ivan", "Igorevich",
\end{itemize}
\end{itemize}
\subsubsection{Задание 3}
\subsubsection*{Задание 3}
\begin{itemize}
\item \textbf{Ценность этапа} Создание и манипуляция множествами объектов.
\item \textbf{Тайминг} 20-25 минут.
@ -335,7 +335,7 @@ Employee[] employees = {
\end{itemize}
\end{itemize}
\subsubsection{Задание 4}
\subsubsection*{Задание 4}
\begin{itemize}
\item \textbf{Ценность этапа} Манипуляция информацией об объекте.
\item \textbf{Тайминг} 15-20 минут.
@ -410,7 +410,7 @@ for (int i = 0; i < employees.length; i++) {
\end{itemize}
\end{itemize}
\subsubsection{Задание 5}
\subsubsection*{Задание 5}
\begin{itemize}
\item \textbf{Ценность этапа} Соблюдение атомарности методов, независимость методов, манипулирующих данными от окружения.
\item \textbf{Тайминг} 10-15 минут.
@ -445,7 +445,7 @@ private static float averageAge(Employee[] emp){
\end{lstlisting}
\end{itemize}
\subsubsection{Домашнее задание}
\subsubsection*{Домашнее задание}
\begin{itemize}
\item \textbf{Ценность этапа} Задать задание для самостоятельного выполнения между занятиями.
\item \textbf{Тайминг} 5-10 минут.
@ -512,7 +512,7 @@ for (int i = 0; i < employees.length; i++) {
\end{itemize}
\end{itemize}
\subsubsection{Рефлексия и завершение семинара}
\subsubsection*{Рефлексия и завершение семинара}
\begin{itemize}
\item \textbf{Цель этапа:} Привести урок к логическому завершению, посмотреть что студентам удалось, что было сложно и над чем нужно еще поработать
\item \textbf{Тайминг:} 5-10 минут
@ -529,21 +529,22 @@ for (int i = 0; i < employees.length; i++) {
\newpage
\appendix
\section*{Приложения}
\addcontentsline{toc}{section}{Приложения}
\renewcommand{\thesubsection}{\Asbuk{subsection}}
\subsection*{Приложения}
\addcontentsline{toc}{subsection}{Приложения}
\setcounter{subsubsection}{0}
\renewcommand{\thesubsubsection}{\Asbuk{subsubsection}}
\subsection{Домашнее задание 1}
\label{appendix:hw1}
\subsubsection{Домашнее задание 1}
\label{appendix:sem3-hw1}
\lstinputlisting[language=Java,style=JCodeStyle,caption={Кот}]{src/s03-hw1-cat.java}
\subsection{Домашнее задание 2}
\label{appendix:hw2}
\subsubsection{Домашнее задание 2}
\label{appendix:sem3-hw2}
\lstinputlisting[language=Java,style=JCodeStyle,caption={Общий класс животного}]{src/s03-hw2-animal.java}
\lstinputlisting[language=Java,style=JCodeStyle,caption={Кот}]{src/s03-hw2-cat.java}
\lstinputlisting[language=Java,style=JCodeStyle,caption={Собака}]{src/s03-hw2-dog.java}
\lstinputlisting[language=Java,style=JCodeStyle,caption={Марафон}]{src/s03-hw2-marathon.java}
\subsection{Практическое задание 1}
\label{appendix:ct1}
\subsubsection{Практическое задание 1}
\label{appendix:sem3-ct1}
\lstinputlisting[language=Java,style=JCodeStyle,caption={Сотрудник}]{src/s03-ct1-employee.java}
\end{document}

View File

@ -5,7 +5,7 @@
\setlength{\columnsep}{22pt}
\pagestyle{plain}
\sloppy
\tableofcontents
%\tableofcontents
\section{Специализация: ООП и исключения}
\subsection{В предыдущем разделе}
Была рассмотрена реализация объектно-ориентированного программирования в Java. Рассмотрели классы и объекты, а также наследование, полиморфизм и инкапсуляцию. Дополнительно был освещён вопрос устройства памяти.
@ -749,7 +749,7 @@ try (TestStream stream = new TestStream()) {
\item для проверки напишите программу, преобразующую квадратный массив целых чисел 5х5 в сумму чисел в этом массиве, при этом, программа должна выбросить исключение, если строк или столбцов в исходном массиве окажется не 5.
\end{enumerate}
\newpage
\printnomenclature[40mm]
% \newpage
% \printnomenclature[40mm]
\end{document}

View File

@ -51,7 +51,7 @@
\end{spreadtab}
\subsection{Подробности}
\subsubsection{Организационный момент}
\subsubsection*{Организационный момент}
\begin{itemize}
\item \textbf{Цель этапа:} Позитивно начать урок, создать комфортную среду для обучения.
\item \textbf{Тайминг:} 3-5 минут.
@ -63,7 +63,7 @@
\end{itemize}
\end{itemize}
\subsubsection{Quiz}
\subsubsection*{Quiz}
\begin{itemize}
\item \textbf{Цель этапа:} Вовлечение аудитории в обратную связь.
\item \textbf{Тайминг:} 5-7 минут (4 вопроса, по минуте на ответ).
@ -101,7 +101,7 @@
\end{enumerate}
\end{itemize}
\subsubsection{Рассмотрение ДЗ}
\subsubsection*{Рассмотрение ДЗ}
\begin{itemize}
\item \textbf{Цель этапа:} Пояснить не очевидные моменты в формулировке ДЗ с лекции, синхронизировать прочитанный на лекции материал к началу семинара.
\item \textbf{Тайминг:} 15-20 минут.
@ -143,12 +143,12 @@ private static final class RowMismatchException extends RuntimeException {
\item для проверки напишите программу, преобразующую квадратный массив целых чисел 5х5 в сумму чисел в этом массиве, при этом, программа должна выбросить исключение, если строк или столбцов в исходном массиве окажется не 5.
\textbf{Вариант решения представлен в приложении \ref{appendix:hw3}}
\textbf{Вариант решения представлен в приложении \ref{appendix:sem4-hw3}}
\end{itemize}
\end{itemize}
\subsubsection{Вопросы и ответы}
\subsubsection*{Вопросы и ответы}
\begin{itemize}
\item \textbf{Ценность этапа} Задать задание для самостоятельного выполнения между занятиями.
\item \textbf{Тайминг} 5-15 минут
@ -162,7 +162,7 @@ private static final class RowMismatchException extends RuntimeException {
\end{itemize}
\end{itemize}
\subsubsection{Задание 1}
\subsubsection*{Задание 1}
\begin{itemize}
\item \textbf{Ценность этапа} Написание почти полноценной механики по краткому ТЗ.
\item \textbf{Тайминг} 25-30 минут.
@ -180,7 +180,7 @@ private static final class RowMismatchException extends RuntimeException {
\item В основном классе программы необходимо по-разному обработать исключения.
\item Метод возвращает \code{true}, если значения верны или \code{false} в противном случае.
\end{enumerate}
\textbf{Вариант исполнения класса в приложении \ref{appendix:ct1}}
\textbf{Вариант исполнения класса в приложении \ref{appendix:sem4-ct1}}
\textbf{Вариант маршрута решения задачи}
@ -256,7 +256,7 @@ public static boolean checkCredentials(String login, String password, String con
\end{itemize}
\subsubsection{Задание 2}
\subsubsection*{Задание 2}
\begin{itemize}
\item \textbf{Ценность этапа} Написание наброска пет-проекта, повторение информации об ООП, работа с исключениями.
\item \textbf{Тайминг} 35-40 минут.
@ -280,7 +280,7 @@ public static boolean checkCredentials(String login, String password, String con
\end{itemize}
\item Вывести в консоль итоговое количество совершённых покупок после выполнения основного кода приложения.
\end{enumerate}
\textbf{Вариант исполнения класса в приложении \ref{appendix:ct1}}
\textbf{Вариант исполнения класса в приложении \ref{appendix:sem4-ct1}}
\textbf{Вариант маршрута решения задачи}
@ -366,7 +366,7 @@ public static Order buy(Customer who, Item what, int howMuch) {
\end{lstlisting}
\end{itemize}
\subsubsection{Домашнее задание}
\subsubsection*{Домашнее задание}
\begin{itemize}
\item \textbf{Ценность этапа} Задать задание для самостоятельного выполнения между занятиями.
\item \textbf{Тайминг} 5-10 минут.
@ -430,7 +430,7 @@ private static void celebrate(Employee[] emp) {
\end{enumerate}
\end{itemize}
\subsubsection{Рефлексия и завершение семинара}
\subsubsection*{Рефлексия и завершение семинара}
\begin{itemize}
\item \textbf{Цель этапа:} Привести урок к логическому завершению, посмотреть что студентам удалось, что было сложно и над чем нужно еще поработать
\item \textbf{Тайминг:} 5-10 минут
@ -447,20 +447,21 @@ private static void celebrate(Employee[] emp) {
\newpage
\appendix
\section*{Приложения}
\addcontentsline{toc}{section}{Приложения}
\renewcommand{\thesubsection}{\Asbuk{subsection}}
\subsection*{Приложения}
\addcontentsline{toc}{subsection}{Приложения}
\setcounter{subsubsection}{0}
\renewcommand{\thesubsubsection}{\Asbuk{subsubsection}}
\subsection{Домашнее задание 3}
\label{appendix:hw3}
\subsubsection{Домашнее задание 3}
\label{appendix:sem4-hw3}
\lstinputlisting[language=Java,style=JCodeStyle,caption={Основная программа}]{src/s04-hw3-exceptional.java}
\subsection{Практическое задание 1}
\label{appendix:ct1}
\subsubsection{Практическое задание 1}
\label{appendix:sem4-ct1}
\lstinputlisting[language=Java,style=JCodeStyle,caption={Логин}]{src/s04-ct1-sign.java}
\subsection{Практическое задание 2}
\label{appendix:ct2}
\subsubsection{Практическое задание 2}
\label{appendix:sem4-ct2}
\lstinputlisting[language=Java,style=JCodeStyle,caption={Магазин}]{src/s04-ct2-shop.java}
\end{document}

View File

@ -5,7 +5,7 @@
\setlength{\columnsep}{22pt}
\pagestyle{plain}
\sloppy
\tableofcontents
%\tableofcontents
\section{Специализация: тонкости работы}
\subsection{В предыдущем разделе}
Рассмотрены понятия внутренних и вложенных классов; процессы создания, использования и расширения перечислений. Подробно рассмотрены исключения с точки зрения ООП, их философия и тесная связь с многопоточностью в Java, обработка, разделение понятия штатных и нештатных ситуаций.
@ -705,8 +705,8 @@ cat0 equal to cat3? false
\item Написать метод поиска слова внутри файла.
\end{enumerate}
\newpage
\printnomenclature[40mm]
% \newpage
% \printnomenclature[40mm]
\end{document}

View File

@ -50,7 +50,7 @@
\end{spreadtab}
\subsection{Подробности}
\subsubsection{Организационный момент}
\subsubsection*{Организационный момент}
\begin{itemize}
\item \textbf{Цель этапа:} Позитивно начать урок, создать комфортную среду для обучения.
\item \textbf{Тайминг:} 3-5 минут.
@ -62,7 +62,7 @@
\end{itemize}
\end{itemize}
\subsubsection{Quiz}
\subsubsection*{Quiz}
\begin{itemize}
\item \textbf{Цель этапа:} Вовлечение аудитории в обратную связь.
\item \textbf{Тайминг:} 5-7 минут (4 вопроса, по минуте на ответ).
@ -100,7 +100,7 @@
\end{enumerate}
\end{itemize}
\subsubsection{Рассмотрение ДЗ}
\subsubsection*{Рассмотрение ДЗ}
\begin{itemize}
\item \textbf{Цель этапа:} Пояснить не очевидные моменты в формулировке ДЗ с лекции, синхронизировать прочитанный на лекции материал к началу семинара.
\item \textbf{Тайминг:} 15-20 минут.
@ -280,7 +280,7 @@ private static boolean isInFile(String fileName, String search) throws IOExcepti
\end{itemize}
\end{itemize}
\subsubsection{Вопросы и ответы}
\subsubsection*{Вопросы и ответы}
\begin{itemize}
\item \textbf{Ценность этапа} Задать задание для самостоятельного выполнения между занятиями.
\item \textbf{Тайминг} 5-15 минут
@ -294,7 +294,7 @@ private static boolean isInFile(String fileName, String search) throws IOExcepti
\end{itemize}
\end{itemize}
\subsubsection{Задание 1}
\subsubsection*{Задание 1}
\begin{itemize}
\item \textbf{Ценность этапа} Сохранение состояния приложения между запусками
\item \textbf{Тайминг} 15-20 мин
@ -343,7 +343,7 @@ fos.close();
\end{itemize}
\end{itemize}
\subsubsection{Задание 2}
\subsubsection*{Задание 2}
\begin{itemize}
\item \textbf{Ценность этапа} Загрузка состояния приложения при запуске
\item \textbf{Тайминг} 15-20 мин
@ -395,7 +395,7 @@ System.out.println(Arrays.toString(ar10));
\end{itemize}
\end{itemize}
\subsubsection{Задание 3}
\subsubsection*{Задание 3}
\begin{itemize}
\item \textbf{Ценность этапа} Работа с текстом (автоматизированный поиск и замена текста в файле или группе файлов)
\item \textbf{Тайминг} 10-15 мин
@ -456,7 +456,7 @@ fos.write(sb.toString().getBytes());
\end{itemize}
\subsubsection{Задание 4}
\subsubsection*{Задание 4}
\begin{itemize}
\item \textbf{Ценность этапа} Работа с файловой системой
\item \textbf{Тайминг} 15-20 мин
@ -501,7 +501,7 @@ void printContents(".");
\end{itemize}
\end{itemize}
\subsubsection{Задание 5 (необязательное)}
\subsubsection*{Задание 5 (необязательное)}
\begin{itemize}
\item \textbf{Ценность этапа} Описание часто недостающих механик операционной системы по «массовой» работе с файлами.
\item \textbf{Тайминг} 15-20 мин
@ -528,7 +528,7 @@ for (String fileName : a) {
\end{lstlisting}
\end{itemize}
\subsubsection{Домашнее задание}
\subsubsection*{Домашнее задание}
\begin{itemize}
\item \textbf{Ценность этапа} Задать задание для самостоятельного выполнения между занятиями.
\item \textbf{Тайминг} 5-10 минут.
@ -591,7 +591,7 @@ System.out.println(Arrays.toString(ar20));
\end{enumerate}
\end{itemize}
\subsubsection{Рефлексия и завершение семинара}
\subsubsection*{Рефлексия и завершение семинара}
\begin{itemize}
\item \textbf{Цель этапа:} Привести урок к логическому завершению, посмотреть что студентам удалось, что было сложно и над чем нужно еще поработать
\item \textbf{Тайминг:} 5-10 минут
@ -607,16 +607,4 @@ System.out.println(Arrays.toString(ar20));
\end{itemize}
\newpage
\appendix
\section*{Приложения}
\addcontentsline{toc}{section}{Приложения}
\renewcommand{\thesubsection}{\Asbuk{subsection}}
\subsection{Домашнее задание 3}
\label{appendix:hw3}
%\lstinputlisting[language=Java,style=JCodeStyle,caption={Основная программа}]{src/s04-hw3-exceptional.java}
\end{document}
\item [$*_2$]