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)
- Time: 11:00 am - 11:50 pm TR
- Location: Centennial Engineering Center B146A
Lab 002 (CRN 43914)
- Time: 12:30 pm - 1:20 pm TR
- Location: Centennial Engineering Center B146A
Assistant
- Nicholas Livingstone nlivingsto@unm.edu
- Office hours
- Tuesday 2pm-3pm, Wednesday 12:00pm-1:30pm in FEC 2155 (Second floor of Farris, right by the CS Dept office)
- Or by appointment via email (appointments only available Mon, Wed, Fri.)
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 2024-08-26 with office hours
Handy References and Links
Course Guidelines
Java
Software
- Azul Zulu OpenJDK Make sure you download the JDK FX package to include JavaFX
- 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 20: 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 machinces 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.
- In lab (or sometime today/tomorrow, at least): 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
- Thursday, August 22: Submission Guidelines
- Project 1: Tiles
Week 2
Week 3
- Monday, September 2: Labor Day Holiday
- Tuesday, September 3: Describe project 2
- Object Oriented Design Principles
- 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.
- Start thinking about your Project 2 design so you can submit a document for peer review by Monday. (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 5: Architectural Design Patterns
- Project 2: Dominos
- Due Friday, September 20
- Initial design on Canvas due Sept 9, peer review due Sept 12
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 17: Singleton Pattern
- Thursday, September 19: Describe scrabble project briefly, more detail to be posted in assignment document
- Project 3: Scrabble
- Due
Wednesday, October 9 Friday, October 17
- Scrabble rules (PDF)
- Large word lists for testing will likely come from this site
- I'll post the Github Classroom assignment next week, but start thinking about your object design as well as the data structures and algorithms you'll use. Participate in the discussion forum and we'll talk more about it in class next week.
Week 6
- Monday, September 23: Brooke is out sick today
- I'll try to keep up with my email and Canvas messages.
- I plan to hold my office hours over Zoom during the regular in person time.
- Tuesday, September 24: Lecture is on Zoom today as Brooke recovers.
- Describe scrabble assignment
- Thursday, September 26: More scrabble
Week 7
Week 8
- Tuesday, October 8: Scrabble issues
- Scrabble deadline is extended to next week. However, you must also meet with your project 4 group to get started on that project while you are wrapping up project 3.
- Thursday, October 10: Fall Break
Week 9
Tuesday, October 15: Meet with your project 4 group and let me know if there are any problems.
Thursday, October 17: Continue Threads and Concurrency
- Make sure you let me know ASAP if there are issues with your project 4 group so I can fix them.
- Fill out the group status survey on Canvas
- Individual threading exercise is also on Canvas.
- As usual, you can polish your project 3 (document bugs, make object diagram pretty, etc.) over the weekend if you need to.
Week 10
Week 11
Week 12
- Tuesday, November 5: More Concurrency Control
- Thursday, November 7: Snow
delay day!
- Lecture is cancelled and I'll be opening my office hours Zoom meeting during the lab times.
Week 13
- Tuesday, November 12: Sockets
- Project 4 is extended until the end of the week
- While finishing Project 4, please take a few minutes to fill out your group member preferences for project 5 so I can put the groups together soon.
- After you're done with project 4, please fill out the peer/self evaluation on Canvas and reflect on what went right/wrong.
- Thursday, November 14: Describe auction project
- Project 5: Distributed Auctions
Week 14
Week 15
- Tuesday, November 26: More auction project
- Thursday, November 28: Thanksgiving Break
Week 16
- Tuesday, December 3: Auction discussion, including possible serializable issue
- Make sure you get me your group demo availability!
- Thursday, December 5:
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.