Introduction to Computer Science II
This course covers Data Structures and Algorithms, emphasizing implementations in the Java programming language.
Instructor: Prof. Calvin James
Term: Spring
Course Overview
- Understand basic mathematical concepts such as functions and sets.
- Know basic concepts in Java, debugging, and OOP.
- Understand run time complexity of algorithms and the use of asymptotic notations.
- Write and analyze recursive programs.
- Use different sorting techniques and understand their differences.
- Understand abstract data types and interfaces such as:
Array,list,stack,queue,PriorityQueue, anddictionary. - Understand implementations for ADT’s and their differences.
Textbooks
- “Data Structures & Algorithm Analysis in Java” by Clifford A. Shaffer
- “Introduction to Algorithms” by T. Cormen, C. Leiserston, R. Rivest, and C. Stein
Schedule
| Week | Date | Topic | Materials |
|---|---|---|---|
| 1 | Introduction | ||
| 2 | Recursion | ||
| 3 | Math background, common functions | ||
| 4 | Algorithm analysis, asymptotic analysis | ||
| 5 | Lists | ||
| 6 | Stacks, queues | ||
| 7 | Dictionaries | ||
| 8 | Binary trees, search trees | ||
| 9 | Priority queues, heaps | ||
| 10 | Sorting | ||
| 11 | Sorting lower bound, linear-time sorting | ||
| 12 | Selection | ||
| 13 | Graphs | ||
| 14 | Graph algorithms |