@@ -108,7 +108,7 @@ \section*{Introduction}
108108 \program {ls}); building and running Java programs with Gradle; knowledge of
109109 the basic commands for using Docker and GitHub
110110
111- \item Your class notes and the discussion slides available from the course web
111+ \item The class notes and the discussion slides available from the course web
112112 site
113113
114114 \item Source code and writing for all of the assigned laboratory and practical
@@ -240,15 +240,22 @@ \subsection*{Chapter Two}
240240
241241 \item The goals, principles, and patterns of object-oriented design in the
242242 Java language
243+
243244 \item An understanding of the principles known as abstraction, encapsulation, and modularity
245+
244246 \item How to use inheritance hierarchies to create an `` is a'' relationship
245247 between Java classes
248+
246249 \item The meaning and purpose of abstract classes and interfaces in the Java
247250 programming language
251+
248252 \item How to create, catch, and handle exceptions thrown in a Java program
253+
249254 \item How to performing casting to convert a variable from one data type to another
255+
250256 \item The ways in which generics promote the implementation of reusable Java
251257 programs
258+
252259 \item Knowledge of the Java syntax needed to declare data structures
253260 that are generically typed
254261
@@ -262,22 +269,36 @@ \subsection*{Chapter Three}
262269 \setlength {\itemsep }{0.05in}
263270
264271 \item How to use arrays to store primitive and reference variables
272+
265273 \item The algorithms for sorting arrays into ascending and descending order
274+
266275 \item How to use psuedo random number generators in Java programs
276+
267277 \item The similarities and differences between one- and two-dimensional arrays
278+
268279 \item The meaning and purpose of techniques for cloning data structures
280+
269281 \item The similarities and differences between `` deep'' and `` shallow'' copies
270282 of arrays
283+
271284 \item How to use the Java methods to construct `` deep'' and `` shallow'' copies
272285 of data structures
286+
273287 \item An understanding of the types of nodes in a \program {SinglyLinkedList} and \program {DoublyLinkedList}
288+
274289 \item The benefits and trade-offs associated with the \program {SinglyLinkedList} and \program {DoublyLinkedList}
290+
275291 \item Knowledge of the worst-case time complexity for all methods of node-based structures
292+
276293 \item Why the \program {removeLast} implementation is inefficient when
277294 implemented in a \program {SinglyLinkedList}
295+
278296 \item The meaning of the term `` equivalence testing'' and how it connects to data structures
297+
279298 \item The `` equivalence relationship'' that must be upheld by, for instance, a \program {DoublyLinkedList}
299+
280300 \item The trade-offs associated with using either arrays or linked lists to implement data structures
301+
281302 \item The benefits that come from using Java's generics to implement node-based list
282303 structures
283304
@@ -292,25 +313,36 @@ \subsection*{Chapter Four}
292313
293314 \item A strategy for timing the implementation of an algorithm in the Java
294315 programming language
316+
295317 \item The challenges associated with experimentally studying an algorithm's
296318 performance
319+
297320 \item A comprehensive understanding of why to use a doubling experiment to
298321 study efficiency
299- \item An understanding of all of the steps and source code needed to conduct a
322+
323+ \item An understanding of all the steps and source code needed to conduct a
300324 doubling experiment
301- \item The challenges associated with conduct an experimental evaluation of an
325+
326+ \item The challenges associated with conducting an experimental evaluation of an
302327 algorithm
328+
303329 \item The meaning and purpose of the terms `` basic operation'' and `` psuedo code''
330+
304331 \item An intuitive understanding of best-, worst-, and average-case analytical
305332 evaluations
333+
306334 \item Knowledge of the seven functions used to characterize an algorithm's
307335 complexity class
336+
308337 \item The relationship between an order-of-growth ratio and the worst-case
309338 time complexity
310- \item The meaning of the `` Big-Oh'' notation used during the
339+
340+ \item The meaning of the `` Big-Oh'' notation used as part of the
311341 analytical evaluation of algorithms
342+
312343 \item Knowledge of the patterns in psuedo code that suggest certain
313344 worst-case time complexities
345+
314346 \item How to intuitively prove the worst-case time complexity of an algorithm
315347 using psuedo code
316348
@@ -403,8 +435,8 @@ \subsection*{Chapter Eight}
403435 \item The benefits that come from using Java's generics to implement
404436 a \program {Tree} data structure
405437
406- \item The formal definition of a tree $ T$ as a data structure with a set of
407- nodes related by edges
438+ \item The intuitive definition of a tree $ T$ as a data structure with a set
439+ of nodes related by edges
408440
409441 \item The meaning of tree-related terms such as `` subtree'' , `` ancestor'' ,
410442 `` descendent'' , and `` leaf''
@@ -430,8 +462,8 @@ \subsection*{Chapter Ten}
430462
431463\begin {itemize }
432464
433- \item The meaning of the term `` associative array'' and how it is evidenced in
434- the \program {HashMap} structure
465+ \item The meaning of the term `` associative array'' and how it is implemented
466+ in the \program {HashMap}
435467
436468 \item Knowledge of how other data structures create an `` associative array''
437469 with efficiency problems
0 commit comments