CS 351: Design of Large Programs

Instructor:

Brooke Chenoweth
Department of Computer Science
Email: bchenoweth@cs.unm.edu (Include course number in a meaningful subject line, please)
Office: FEC 2060
Office Hours: Monday 2pm-4pm in person, Friday 2pm-4pm via Zoom, or by appointment

Lectures

Lectures are 9:30 am - 10:45 am TR in Dane Smith Hall 127

Labs

Lab 001 (CRN 43913)

Lab 002 (CRN 43914)

Assistant

Course Description

This project-oriented course is intended to help students acquire the design and programming skills needed to perform well in professional settings where they are expected to translate customer needs into functioning code. The emphasis is on understanding the complexities and subtleties of object-oriented design and on leveraging off object-oriented programming to deliver large complex programs that are elegant, modular, easy to use, and easy to modify while delivering the expected level of performance. Design and programming concepts are first introduced and illustrated in lectures and later used in the laboratory on a series of projects exhibiting increasing levels of complexity and sophistication. Sequential, concurrent, and distributed design and programming concepts are introduced in this order with the associated projects matching the increase in complexity. Depending on the project, students will be expected to work alone or in small groups. Peer reviews will be an integral part of the laboratory experience.

Syllabus

Course Guidelines

Java

Version Control


Lectures and Assignments

Week 1

Week 2

Week 3

Week 4

Week 5

Week 6

Week 7

Week 8

Week 9

Week 10

Week 11

Week 12

Week 13

Week 14

Week 15

Week 16

Finals Week