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 Month Day Topic Readings (parenthesized
reading are optional)
1 January 23 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   25 Introduction: Creating, compiling, and executing Java programs (javac, java) 1.8-1.10
3   27 Introduction: Creating, compiling, and executing Java programs (Eclipse) 1.12
4 30 Elementary Programming: Scanner, variables, primitive datatypes, arithmetic operators 2.1-2.9
5 February 1 Elementary Programming: arithmetic expressions, assignments, casting 2.10-2.15
6   3 Elementary Programming: software development process, common pitfalls 2.16-2.18
7   6 Selections: boolean type, if/if-else statements, common pitfalls 3.1-3.6
8   8 Selections: random number generation, logical operators 3.7-3.12
9 10 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
10 13 Mathematical Functions and Characters: class Math methods, char type and operations 4.1-4.3
11   15 Strings and Number Systems: String type, binary, hexadecimal review (covered earlier with section 2.10.1) 4.4-4.5
12   17 Formatted output: printf 4.6
13   20 Loops: while-loops, do-while loops 5.1-5.3
14 22 Loops: for-loops, loop choice, nested loops 5.4-5.7
15   24 Loops: break, continue, examples 5.8-5.11
16   27 Methods: defining and invoking methods, return statements with/without return values, passing arguments by value 6.1-6.5
17 March 1 Methods: developing modular, reusable code, method overloading 6.6-6.8
18   3 Methods: variable scope, abstraction, and stepwise refinement 6.9-6.11
19   6 Arrays: declaration, creation, length, access, initialization, common array algorithms, for-each loop 7.1-7.4
20   8 Arrays: copying contents from array to array, array arguments and return values, variable-length argument lists 7.5-7.9
21   10 Arrays: linear and binary search, selection sort, java.util.Arrays methods, command line arguments 7.10-7.13
22   20 In-class Midterm Exam review Chapters 1-7
23 22 Multidimensional Arrays: 2D array declaration, creation, access, common operations, passing as arguments, examples 8.1-8.6
24   24 Multidimensional Arrays: examples, 3D+ arrays 8.7-8.8
25   27 Objects and Classes: defining classes, creating objects, constructors, object reference variables, defining and accessing object fields and methods 9.1-9.5
26   29 Objects and Classes: Java library classes, static versus non-static, private access specifier, getter/setter methods, data encapsulation 9.6-9.9
27   31 Objects and Classes: object arrays, immutable objects, variable scope, keyword this 9.10-9.14
28 April 3 Object-Oriented Thinking: class abstractions in object-oriented programming, class relationships, design principles 10.1-10.4
29   5 Object-Oriented Thinking: wrapper classes and conversion to/from primitive types (i.e. auto-(un)boxing), BigInteger, BigDecimal 10.5-10.9
30   7 Object-Oriented Thinking: String, StringBuilder, StringBuffer 10.10-10.11
31   10 Recursion: recursive problem solving, base case(s), recursive step 18.1-4 
32   12 Recursion: recursive helper/auxiliary functions, recursive solution examples 18.5-7
33   14 (no class - Good Friday) Video tutorial: Dynamic Programming  video and submission instructions
34   17 (no class - Monday after Easter) Video tutorial: java.util Package Goodies: Java Generics, ArrayLists 11.1, 13.5, 19.1-2, 20.1-6, videos and submission instructions
35   19 java.util Package Goodies: Stack, Queue (LinkedList), PriorityQueue, Set/HashSet/TreeSet 20.8-9 (Stacks, Queues, PriorityQueues); 21.1-21.2.1(Set)
36   21 java.util Package Goodies: Map/HashMap/TreeMap, worked example: Chomp solver 21.5 (Map)
37   24 Stochastic Local Search: global optimization, combinatorial optimization examples (Stochastic Local Search Tutorial; Teaching Stochastic Local Search)
38 26 Monte Carlo Simulation: review, Connect 4 and Approach-N examples Monte Carlo Simulation section of An Introduction to Monte Carlo Techniques in Artificial Intelligence
39 28 Monte Carlo Simulation: retirement investing MC Analysis  
40 May 1 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   3 Review, Course Evaluations, Exam Practice  
42   5 Review, Exam Practice
      Final Exam Schedules (Fall, Spring) Section A Final: Monday, May 8, 8:30 a.m. - 11:30 a.m.; Section B Final: Saturday, May 13,  1:30 p.m. - 4:30 p.m.