Course Syllabus
CS125 is a fast-paced and demanding course. In completing the weekly programming assignments, collaborative-projects and writing code in weekly exams you will demonstrate the following skills and knowledge:
- Learn and reason about a simple machine model with a tiny CPU instruction set and addressable memory.
- Create simple imperative programs in Java solving a variety of tasks on different data types e.g., text processing, simple substitution ciphers, interactive graphical programs (2D games), image processing effects using strings, 2D arrays and bit functions.
- Create and use simple OO classes (e.g. student implements a list,queue,map using arrays). Advanced OO topics (inheritance, polymorphism,runtime-type checking) are briefly introduced.
- Use a visual debugger with breakpoints to determine code-path of complex code under different data conditions.
- Use an industry-standard fully-featured modern IDE (e.g. Eclipse).
- Use an industry-standard code repository system.
- Write simple recursive methods (e.g. recursive search on a family tree, recursive search of a shortest path through a cyclic maze).
- Find and fix common errors in small code snippets.
- Use simple data structures (1D,2D-Arrays, linked lists, simple trees).
- Determine the output and expected order-of-growth running time of iterative and recursive algorithms (including recursive implementations of binary search, selection sort, quicksort and merge sort).
- Work with a variety of data sources and formats.
- Reason about simple parallel examples, and interleaved statements operating on a shared data structure, and identify or use simple parallelism concepts (Amdahl's law, embarrassingly parallel problems, race condition analysis).
- Be able to develop programs using industry-standard pair programming techniques.
- Work with and manipulate image and sound data
- Write simple mobile applications (Android, Swift).
- Lead code reviews.
Weekly Activities