Carnegie Mellon University Website Home Page
 
Fall 2013

General Information

About the Course

15-121 is a continuation of the process of program design and analysis for students with some prior programming experience (functions, loops, and arrays, not necessarily in Java). The course reinforces object-oriented programming techniques in Java and covers data aggregates, data structures (e.g., linked lists, stacks, queues, trees, and graphs), and an introduction to the analysis of algorithms that operate on those data structures.

Learning Outcomes

Upon the successful completion of this course, students will be able to:

  • write medium-sized (couple-hundred line) programs in Java to implement a solution to a specified problem by using a Java IDE (such as Eclipse or Dr.Java)
  • further develop and hone a sense of proper idiomatic programming style in Java
  • decompose the solution into appropriate classes and implement those classes with appropriate fields and methods
  • write a class that implements a specified interface
  • choose between and implement a recursive or iterative approach to solving a problem as appropriate
  • understand and implement the following data structures: dynamic array, linked list, binary search tree, heap, hash table
  • be able to implement (or choose the appropriate Java implementation) of the following Abstract Data Types: list (array, ArrayList, LinkedList), stack, queue, priority queue, tree, set (HashSet, TreeSet), map (HashMap, TreeMap) or graph (adjacency list/matrix) to solve a specified problem
  • analyze the Big O running time of an algorithm or method

Topic Outline

This course will cover the following topics:

  • Introduction to the Java programming language
  • Object-Oriented Programming
  • Arrays and ArrayLists
  • Efficiency and O-notation
  • Linked Lists
  • Recursion
  • Java Interfaces and Iterators
  • Stacks and Queues
  • Searching and Sorting
  • Trees (including Binary Search Trees)
  • Priority Queues and Heaps
  • Sets, Maps and Hashing
  • Graphs and Graph Algorithms (if time permits)

For a detailed sequence, see the lecture schedule.

Prerequisite

15-110, Principles of Computing

Textbooks

The following textbooks are required for 15-121:

Java Illuminated, Brief Edition (3/e)
by Julie Anderson and Herve Franceschi
Publisher: Jones & Bartlett (2011)
ISBN: 978-1449632021
Data Structures: Abstraction and Design Using Java (2/e)
by Elliot Koffman and Paul Wolfgang
Publisher: John Wiley & Sons (2010)
ISBN: 978-0470128701