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.


Eric Fouh
efouh [at] cis.upenn.edu


The prerequisite for this course is CIT 591 or similar.


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


Learning Activities:

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



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)