General Course Info

  • Instructor: Prof. Godwin [godwin (at)]
  • First Class: Monday, Aug 27
  • Time/ Location: Mon/Thur 4:05pm-5:20pm, Anderson B-14
  • Office Hours: Mon 1:30-2:30pm, Wed 4-5pm
    Don Myers 112C
  • TA: TBA
  • TA Office Hours: TBA

This course is a continuation of problem solving and object-oriented programming. There will be more emphasis on larger programs built from modules. You will be introduced to abstract data structures: stacks, queues, graphs, and trees and their implementations and associated algorithms. We will discuss elementary numerical methods and the construction of a simple graphical user interface (GUI).

In this class, you will learn about:

Software Development Fundamentals
To be able to design and implement a Java program to model a real-world system, and subsequently analyze its behavior.
Programming Languages
To know and use basic Java programming constructs for object-oriented problem solving (e.g., classes, polymorphism, inheritance, interfaces).
Algorithms and Complexity
To appreciate the role of algorithms and data structures in problem solving and software design (e.g., objected-oriented design, lists, files, searching and sorting)
Software Engineering
To develop programming skills that can serve as a foundation for further study in computer science.
Social Issues and Professional Practice
Social implications of computing in a networked world and the impact of social media on individualism, collectivism and culture.

Academic integrity: Unless explicitly stated otherwise, you are expected to do your assignments and work collaboratively with your assigned teammate(s), but not share code with other teams in the class. It is not appropriate to find existing code, modify it and submit it as your own work. Code submitted for projects may be compared to existing databases of example student work to verify authenticity. Exams and quizzes will be an independent effort. If in doubt, confer with your instructor.

All students are expected to adhere to the American University Honor Code.

Course Schedule

Readings should be completed after each lecture. All readings are from the Liang text unless stated otherwise.

Week Mon Tue Wed Thur Fri
1 Aug-27 Welcome and Introduction to Java
Read Ch 1.1 - 1.10.4
Aug-30 Elements of Java Programming / Selections
Read Ch 2 - 3.3
Submit P0
2 Sep-3
Break Labor Day
Sep-6 Selections cont'd / Math Functions, Characters, and Strings
Read Ch 3.4 - 4.4
3 Sep-10 Loops
Read Ch 5
Sep-13 Methods
Read Ch 6
Submit P1
4 Sep-17 Arrays
Read Ch 7 & 8
Exam Exam 1

5 Sep-24 Objects and Classes
Read Ch 9
Sep-27 Object-Oriented Thinking
Read Ch 10
6 Oct-1 Inheritance and Polymorphism
Read Ch 11
Oct-4 Abstract Classes
Read Ch 13
Submit P2
7 Oct-8 JavaFX
Read Ch 14
Oct-11 Events and Animation
Read Ch 15
8 Oct-15 UI Design
Read Ch 16
Exam Exam 2

9 Oct-22 Recursion
Read Ch 18
Oct-25 Guest Lecture
Read None
Submit P3
Break Fall Break
10 Oct-29 Generics
Read Ch 19
Nov-1 Data Structures
Read Ch 20
11 Nov-5 Implementing Data Structures
Read Ch 24
Nov-8 Algorithms
Read Ch 22
12 Nov-12 Sorting
Read Ch 23
Exam Exam 3

13 Nov-19 Graphs
Read Ch 28
Submit P4
Break Thanksgiving
Break Thanksgiving
14 Nov-26 Weighted Graphs
Read Ch 29
Nov-29 Hashing
Read Ch 27
15 Dec-3 Binary Search Trees
Read Ch 25
Dec-6 Adelson-Velsky & Landis (AVL) Trees
Read Ch 26
Submit P5
16 Dec-13 02:30PM-05:00PM
Exam Final Exam


Class Participation

It is expected that students will come to class, be prepared by doing the readings, and will pay attention and participate in discussions. Participation will be scored both by instructor review of the quality of work during in-class exercises and peer-assessment of your contributions to the group.

Any questions regarding general rules and regulations should first be directed to the American University Catalog. If you still have questions, please seek out the TA or Instructor during the posted office hours.

Use of Computers and Cell Phones in Class

Educational research shows that taking notes by hand on paper will lead to better retention of material than taking notes by typing. Also, in the past classrooms have had issues with students not only not paying attention but also disrupting others during class-- by playing games, by accidentally clicking on a video with the sound on, etc.

If you have a laptop, you should bring it to class. Do not use it for in-class assignments unless you are directly advised to do so by the instructor.

Please do not use your cell phone in class.


Homeworks will be graded on a list of criteria (specified on the assignment) such as accuracy of code input/output, completeness, insight into technical issues, insight into social issues, etc. For each criterion, you will receive either a check plus, check, or check minus. Most criterion will receive a check. A plus means "you impressed me." A minus means the assignment is incomplete, incorrect, or sloppy in some fashion with respect to that criterion. Pluses and minuses are combined to give your grade for the assignment. For most assignments, you start out half way between a B+ and A-. One plus makes it an A-; one minus makes it a B+. These are general guidelines to let you know what to expect. Grading on specific assignments may differ.

All assignments will be submitted through the class Github system, which will be introduced in early lectures.

Required Textbooks

Introduction to Java Programming and Data Structures, 11th Comprehensive Edition


Component Weight
Class Participation 20%
Attendance 10%
HW Projects 30%
Exams 30%
Quizzes 10%

Late Policy

Assignments are due at 5pm on the specified date unless stated otherwise. Late assignments will be penalized at a rate of 3 pts (one grade step: A becomes A-) per day. Assignments more than one week late will not be accepted.

Over the course of the term, you have three "late days" where work may be late with no explanation needed. Please mark “Use my late days” on the first page of your assignment/paper if want to use your late days when you make late submissions. Use your late days wisely as different submissions have different weights. If you are working in a team for an assignment (as you will most often be) a late submission uses a late day from both team members.


Assignments and ideas on this syllabus build from the work of many other instructors in computing, especially Adam Knapp at American University, John Stasko at the Georgia Institute of Technology, and Dave Reed at Creighton University.