CS 111 - Introduction to Computer Science I
Readings


Unless otherwise noted, all readings are from the Y. Daniel Liang course text. 

Each reading assignment should be completed before the class on the date indicated.  These readings are subject to change; check here for updates.  If a reading assigned in class does not match the reading assignment here, the reading assigned in class supersedes.  
Class Date Topic Readings (parenthesized
reading are optional)
1 Course overview, introduction to computing environment, Introduction to Computers Programs, and Java Course Information Page; Guide to CS1 Success; 1.1-1.7 (Getting Things Done tutorial video)
2 Introduction: Creating, compiling, and executing Java programs (javac, java) 1.8-1.10
3 Introduction: Creating, compiling, and executing Java programs (Eclipse) 1.12
4 Elementary Programming: Scanner, variables, primitive datatypes, arithmetic operators 2.1-2.9
5 Elementary Programming: arithmetic expressions, assignments, casting 2.10, 2.12-2.16
6 Elementary Programming: software development process, common pitfalls 2.17-2.19, 4.2.3
7 Selections: boolean type, if/if-else statements, common pitfalls (video after this and before next class) 3.1-3.6
8 Selections: random number generation, logical operators 3.6 common pitfalls video, 3.7-3.12, 9.6.2 (Random class)
9 Selections: switch, if-else expression (a.k.a. conditional expression, selection operator, ternary operator), operator precedence and associativity, debugging in Eclipse 3.13-3.16, (operator precedence and associativity (video)), after class: debugging basics in Eclipse (video)
10 Mathematical Functions and Characters: class Math methods, char type and operations 4.1-4.3
11 Strings and Number Systems: String type, binary, hexadecimal review (covered earlier with section 2.10.1) 4.4-4.5
12 Formatted output: printf 4.6
13 Loops: while-loops, do-while loops 5.1-5.6
14 Loops: for-loops, loop choice, nested loops 5.7-5.10
15 Loops: break, continue, examples 5.11-5.14
16 Methods: defining and invoking methods, return statements with/without return values, passing arguments by value 6.1-6.5
17 Methods: developing modular, reusable code, method overloading 6.6-6.8
18 Methods: variable scope, abstraction, and stepwise refinement 6.9-6.11
19 Arrays: declaration, creation, length, access, initialization, common array algorithms, for-each loop 7.1-7.4, after class: array algorithms (video)
20 Arrays: copying contents from array to array, array arguments and return values, variable-length argument lists 7.5-7.9
21 Arrays: linear and binary search, selection sort, java.util.Arrays methods, command line arguments 7.10-7.13
22 In-class Midterm Exam review Chapters 1-7
23 Multidimensional Arrays: 2D array declaration, creation, access, common operations, passing as arguments, examples 8.1-8.6
24 Multidimensional Arrays: examples, 3D+ arrays 8.7-8.8
25 Objects and Classes: defining classes, creating objects, constructors, object reference variables, defining and accessing object fields and methods 9.1-9.5
26 Objects and Classes: Java library classes, static versus non-static, private access specifier, getter/setter methods, data encapsulation 9.6-9.9
27 (no class meeting - Good Friday 2024) Objects and Classes: object arrays, immutable objects, variable scope, keyword this 9.10-9.14, Homework #10 overview video
28 Object-Oriented Thinking: class abstractions in object-oriented programming, class relationships, design principles 10.1-10.4
29 Object-Oriented Thinking: wrapper classes and conversion to/from primitive types (i.e. auto-(un)boxing), BigInteger, BigDecimal 10.5-10.9
30 Object-Oriented Thinking: String, StringBuilder, StringBuffer 10.10-10.11
31 Recursion: recursive problem solving, base case(s), recursive step 18.1-4, (Tower of Hanoi Puzzle)
32 Recursion: recursive helper/auxiliary functions, recursive solution examples 18.5-7
33 Recursion: Dynamic Programming  review prior readings
34 java.util Package Goodies: Java Generics, ArrayLists 11.1, 13.5, 19.1-2, 20.1-6
35 java.util Package Goodies: Stack, Queue (LinkedList), PriorityQueue, Set/HashSet/TreeSet 20.8-9 (Stacks, Queues, PriorityQueues); 21.1-21.2.1(Set)
36 java.util Package Goodies: Map/HashMap/TreeMap, worked example: Chomp solver 21.5 (Map)
37 Programming practice (review your readings)
38 Programming Quiz #12 (review your readings)
39 Cloneable, Deep clone, Programming practice 13.7 (The Cloneable Interface)
40 Math methods, lambda expressions, packages (e.g. linear algebra w/ JAMA) 9.8, Supplement III.E (Packages); 15.6 (Lambda expressions), Lambda Quick Start examples
41 Review, Course Evaluations, Exam Practice review prior readings
42 Programming Quiz #13 review prior readings
    Final Exam Schedules on Registrar page under "Resources" (Fall, Spring)
Section A Final:
Sunday, May 5th, 1:30-4:30PM
Section B Final:
Thursday, May 9th, 1:30-4:30PM