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, and dictionary.
  • 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