|
CS 111 - Introduction to Computer Science I
Syllabus |
This syllabus is not a contract. We reserve the right to spend more time
than scheduled on certain topics, less time on others and may, as a result,
omit others. In short, the
syllabus is a guide that represents our best thinking about the course at
the time it was constructed.
Text:
Intro to Java Programming, Comprehensive Version, Student Value Edition 12th Edition by Y. Daniel Liang
Summary: Liang text chapters 1-10, plus recursion, dynamic
programming, use of Java data structures (lists, stacks, queues, sets, maps),
and assorted topics (e.g. depth-first search, Monte Carlo simulation, packages, and lambda
expressions).
Details:
- Chapter 1: Introduction to Computers, Programs, and Java
- course overview, introduction to computing environment, creating,
compiling, and executing Java programs (javac, java, eclipse)
- Chapter 2: Elementary Programming - Scanner,
variables, primitive datatypes, arithmetic operators, arithmetic
expressions, assignments, casting, software development process, common
pitfalls
- Chapter 3: Selections - boolean type, if/if-else
statements, common pitfalls, random number generation, logical operators,
switch, if-else expression (a.k.a. conditional expression, selection
operator, ternary operator), operator precedence and associativity,
debugging in Eclipse
- Chapter 4: Mathematical Functions, Characters, and Strings
- class Math methods, char type and operations, String type, binary,
hexadecimal review (covered earlier with section 2.10.1), printf
- Chapter 5: Loops - while-loops, do-while loops,
for-loops, loop choice, nested loops, break, continue
- Chapter 6: Methods - defining and invoking methods,
return statements with/without return values, passing arguments by value,
developing modular, reusable code, method overloading, variable scope,
abstraction, and stepwise refinement
- Chapter 7: Single-Dimensional Arrays - declaration,
creation, length, access, initialization, common array algorithms,
for-each loop, copying contents from array to array, array arguments and
return values, variable-length argument lists, linear and binary search,
selection sort, java.util.Arrays methods, command line arguments
- Chapter 8: Multidimensional Arrays - 2D array
declaration, creation, access, common operations, passing as arguments,
3D+ arrays
- Chapter 9: Objects and Classes - defining classes,
creating objects, constructors, object reference variables, defining and
accessing object fields and methods, Java library classes, static versus
non-static, private access specifier, getter/setter methods, data
encapsulation, object arrays, immutable objects, variable scope, keyword
this
- Chapter 10: Object-Oriented Thinking - class
abstractions in object-oriented programming, class relationships, design
principles, wrapper classes and conversion to/from primitive types (i.e.
auto-(un)boxing), BigInteger, BigDecimal, String, StringBuilder,
StringBuffer
- Recursion and Dynamic Programming - recursive problem
solving, base case(s), recursive step, recursive helper/auxiliary
functions, recursion with dynamic programming
- java.util Package Goodies - Java Generics,
ArrayLists, Stack, Queue (LinkedList), PriorityQueue, Set/HashSet/TreeSet,
Map/HashMap/TreeMap
- Programming Practice -
reading CSV files, linear regression, depth-first search, Monte Carlo
simulation
- Using Packages and Lambda Expressions - adding
packages to the build path (classpath), interfaces, lambda expressions,
linear algebra and numerical methods examples