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 via Zoom,
Thursday 1:30pm-3:30pm in person,
or by appointment
Lectures
Lectures are 9:30 am - 10:45 am TR in Mitchell Hall 102
Labs
Lab 001
- Time: 11:00 am - 11:50 pm Tuesday
- Location: Centennial Engineering Center B146A
Lab 002
- Time: 11:00 am - 11:50 pm Thursday
- Location: Centennial Engineering Center B146A
If you need extra help, feel free to drop in the other lab time as well.
Teaching 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.
- Updated 2025-08-22 with my office hours
Handy References and Links
Course Guidelines
Java
Software
- The CS machines already have the Azul JDK and IntelliJ installed. If you are developing on your own machine make sure you are using the same versions.
- Azul Zulu OpenJDK Make sure you download the JDK FX package to include JavaFX and select the LTS version 21.
- IntelliJ IDEA
- The free Community version will suffice for this course. Scroll down to find the correct link!
- You can get the Ultimate version for free if you register with an edu email address, but you don't need the extra features in this course.
Documentation
Version Control
Lectures and Assignments
Week 1
- Tuesday, August 19: Welcome and Introduction
- Submission Guidelines
- Go over Coding Standards
- You can work on a personal computer for your projects, but we will be testing on the CS machines so you still need to be able to log into your CS account. Make sure you know your password in time for lab.
- Make sure you are set up with the tech for this course on whichever computer(s) you are using. (Java, IntelliJ, and git are already on the CS machines)
- Azul Zulu OpenJDK
- Make sure you download the JDK FX package that includes JavaFX
- We will be using JDK 21 in this course.
- IntelliJ IDEA
- The free version will suffice for this course.
- You can get the full version for free if you register with an edu email address.
- This week: Begin to learn the Git version control system
- You may also find this tutorial helpful, along with the other documentation on the git site.
- Set up a Github account
- Follow the instructions on the Intro to Git lab assignment
- Get help in lab if you have any questions
- Thursday, August 21: Discuss project 1
- Project 1: Tiles
- Due Friday, August 29
- NY Times Tiles Game
- Object Design: For this first project, you will all use the same object design. Do not change the design diagram (you can copy the slide or redraw it), but do flesh out the description in the file you include in your docs directory.
Week 2
- Tuesday, August 26
- Thursday, August 28
Week 3
- Tuesday, September 2
- Thursday, September 4
Week 4
- Tuesday, September 9
- Thursday, September 11
Week 5
- Tuesday, September 16
- Thursday, September 18
Week 6
- Tuesday, September 23
- Thursday, September 25
Week 7
- Tuesday, September 30
- Thursday, October 2
Week 8
- Tuesday, October 7
- Thursday, October 9: No class, Fall Break
Week 9
- Tuesday, October 14
- Thursday, October 16
Week 10
- Tuesday, October 21
- Thursday, October 23
Week 11
- Tuesday, October 28
- Thursday, October 30
Week 12
- Tuesday, November 4
- Thursday, November 6
Week 13
- Tuesday, November 11
- Thursday, November 13
Week 14
- Tuesday, November 18
- Thursday, November 20
Week 15
- Tuesday, November 25
- Thursday, November 27: No class, Thanksgiving Break
Week 16
- Tuesday, December 2
- Thursday, December 4
Finals Week
- No exam this week, but you will be demoing your final projects, so don't skip town prematurely.
- It's finals week, so I won't be having my usual office hours, but will be checking my email and Canvas messages.