Advanced programming and design techniques including object-oriented design, design patterns, user interfaces (desktop and web), databases, concurrency, basic networking, collaborative design, code review, testing, debugging, the software lifecycle, and static analysis tools.

Lectures1:00pm-2:20pm ET on Tuesdays and Thursdays
Lecture NotesPublished after each class
TextEffective Java is recommended but not required
PrerequisiteCSCI 0160, CSCI 0180, or CSCI 0190.
InstructorTim Nelson (
Office HoursTBD, held virtually
LabsWeek-long labs held throughout the semester. They cover Git, testing, HTML, containerization, databases, Javascript, Canvas, React, concurrency, and deployment.
ProjectsA series of projects (the majority done in pairs or groups) that increase in complexity throughout the term from a datastructure implementation with little interface, to a full-fledged graphical application integrating work done on all previous projects.
Term ProjectOne project of your own design. You will work in teams of four on a significant project that you think is important. You will convince your mentor TA that the work is worthwhile, specify its features, design and implement it throughout the term, culminating in a demo day.
IncompletesIncompletes are granted only in exceptional conditions. For your own good, we strongly recommend keeping current. This class maintains a steady pace and each project builds off the previous. It is difficult to fall behind and catch up later.
Late Policy Lab late policy is displayed on the labs page. Readings and code reviews must be submitted by the deadline; you will receive a 20% deduction for each day late after the deadline. For projects, the full late policy is described in the course missive.
Grading Labs: 15%; Professionalism and Participation: 5%; Projects: Stars (3 Parts) 15%, Maps (4 Parts) 25%; Term Project: 40%.
Course TimeStudents will spend approximately 3 hours per week in class (40 hours total), and 2 hours per week in labs (20 hours total). Homework and other out-of-class work is estimated at anywhere from 10-18 hours per week (commitment varies per week).