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.

LecturesJ Hour: 1:00pm-2:20pm on Tuesdays and Thursdays
Room85 Waterman 130
Lecture NotesPublished after each class
TextEffective Java is recommended but not required
PrerequisiteCSCI 0160, CSCI 0180 or CSCI 0190.
InstructorTim Nelson (tbn@cs.brown.edu)
Office HoursTuesday 3-4 CIT 355
LabsNine weeks of lab held throughout the semester. They cover Git, testing, HTML, databases, Javascript, profiling, canvas, concurrency, and deployment. Except for the first lab, students will be assigned to a two hour lab block, where they will complete the lab in partners and get checked off by a TA. For the first lab, you may attend any lab section to get checked off. If you cannot attend your assigned lab section for a certain week, email the HTAs to reschedule.
ProjectsThree projects (One individual, two pair) 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.
Group 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 If you do not finish the lab in your scheduled section, you may get it checked off at your next scheduled lab section for full credit. After one week, you will no longer be able to receive credit for that lab. 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.
GradingLabs: 15%; Professionalism and Participation: 5%; Projects: 12%, 18%, 20%; Term Project: 30% As of Mar 13, 2020: Projects: 12%, 18%, 10%; 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).