About the course

This course will focus on data structures, software design, and advanced Java. The course starts off with an introduction to data structures and basics of the analysis of algorithms. Important data structures covered will include arrays, lists, stacks, queues, trees, hash maps, and graphs. The course will also focus on software design and advanced Java topics such as software architectures, design patterns, networking, multithreading, and graphics. We will use Java for the entire course.

Instructor

Eric Fouh
efouh [at] cis.upenn.edu

Prerequisites

The prerequisite for this course is CIT 591 or similar.

Topics

Here's the tentative list of topics:

  • Data Structures
    • Introduction to Data Structures
    • Basics of analysis of algorithms, Space and Time Complexity
    • Arrays
    • Linked Lists
    • Recursion
    • Stacks and Queues
    • Lists and Iterators in Java
    • Maps, Dictionaries, Hashing, Sets
    • Trees
    • Graphs
  • Software Design and Advanced Java
    • Software Testing
    • Design Patterns
    • Software Architectures

Grading

Learning Activities:

  • Programming homeworks (7)
  • Self-assigned project (1)
  • Reading quizzes

Textbook

Online

Best Projects Spring 2021

  • Sentiment Analysis and Classification of COVID-19 Vaccine Discussions (Ning Kang, Lejun Huang, Jiabei Li)
  • The Wiki Game (Vanessa Lam, Jake Golden, David Binstock)
  • The Wiki Game (Homer Wang, Nicholas Schell, James Baker)