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:
Mondays 2:30pm-4:00pm in person,
Thursdays 2:30pm-4:00pm via Zoom,
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 2026-08-24 with 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 25. (If you just scroll down on the page after clicking this link, it'll already be selected for you.)
- IntelliJ IDEA
- Documentation
Version Control
Lectures and Assignments
Week 1
- Tuesday, August 18: Welcome and Introduction
- 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)
- 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.
- Follow the instructions on the Initial Git Practice lab assignment
- Get help in lab if you have any questions
- Thursday, August 20: Describe Project 1
- Project 1: Tiles
- Due Friday, August 28
- NY Times Tiles Game
Apparently, they force you to subscribe now to play the games.
- Fortunately, I found a Free Tiles Clone
- 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 25: Live demo setting up project in IntelliJ
- Some git digressions on the blackboard
- Continue with JavaFX (for like 10 minutes at the end of lecture)
- Thursday, August 27: Continue with JavaFX
- Describe creating jar files
- I know some of you have had technical difficulties on project 1. If you need to finish/polish up your project over the weekend/Monday, that's fine with me. We can see that you've been working from your commit history.
Week 3
- Tuesday, September 1: Describe project 2
- Programming Abstractions
- Abstract Data Types
- If you had troubles with project 1 (mostly related to git and/or the jar files), I'm okay if you have few stray commits this week as you're able to get help in lab and/or office hours.
- Start thinking about your Project 2 design so you can submit a document for peer review by Friday. (If you submit earlier, I'll try to give feedback as the submissions come in so we can avoid the rush to discuss in lab.)
- Thursday, September 3: Object Oriented Design Principles
- Project 2: Dominos (Updated requirements 2025-09-08)
- Due
Friday, September 11 Monday, September 14
- Initial design on Canvas due September 4, peer review due September 8
You will not be able to do the peer review assignment unless you submit a design before the deadline!
Week 4
Week 5
- Tuesday, September 15: Describe scrabble project
- Finish your domino commits now and start on scrabble design
- Thursday, September 17: Design Patterns
- Project 3: Scrabble
Week 6
Week 7
- Tuesday, September 29
- Thursday, October 1
Week 8
- Tuesday, October 6
- Thursday, October 8: No class during Fall Break
Week 9
- Tuesday, October 13
- Thursday, October 15
Week 10
- Tuesday, October 20
- Thursday, October 22
Week 11
- Tuesday, October 27
- Thursday, October 29
Week 12
- Tuesday, November 3
- Thursday, November 5
Week 13
- Tuesday, November 10
- Thursday, November 12
Week 14
- Tuesday, November 17
- Thursday, November 19
Week 15
- Tuesday, November 24
- Thursday, November 26: No class during Thanksgiving Breakxo
Week 16
- Tuesday, December 1
- Thursday, December 3
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.