CS 251: Intermediate Programming
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 11:00 am - 11:50 am MWF in Mechanical Engineering 218
Course Assistant
Course Description
CS-251 is an introduction to the methods underlying modern program
development. Specific topics will include object-oriented design and
the development of graphical user interfaces. Programming assignments
will emphasize the use of objects implemented in standard libraries.
Students taking this course should already be familiar with basic
concepts of computer programming such as variables, conditional
control flow and loops.
- Updated 2026-08-24 with office hours
Handy References and Links
CS 251 Code Standards
Java
Editors and IDEs
Past Exams
Lectures and Assignments
Week 1
- Monday, August 17: Welcome and Intro
- Wednesday, August 19: Compiling and running on the command line
- Friday, August 21: Continue Java basics
- Describe FizzBuzz assignment
- Begin Methods and Classes
- Project 1: FizzBuzz
Week 2
Week 3
- Monday, August 31: Inheritance
- Wednesday, September 2: Continue inheritance
- Friday, September 4: Continue more class stuff
- Project 3: Inheritance
Week 4
- Monday, September 7: No classes for Labor Day holiday
- Wednesday, September 9: Go over quiz 3
- Friday, September 11: Fun with keywords
Week 5
Week 6
Week 7
- Monday, September 28: IO Streams
- Finish looking at my Gomoku code
- Wednesday, September 30: Go over quiz 7
- Friday, October 2: Finish IO Streams
- Project 6: Line Sorter
- Due Friday, October 16
- You won't need anywhere near this much time for this project, but I'm allowing you time to study for the midterm and enjoy your fall break.
- Examples from document:
testin.txt
testout.txt
- Another input file
and corresponding output file
Week 8
- Monday, October 5: Review for midterm
- Wednesday, October 7: Midterm exam
- You may bring with you a single sheet of 8.5" x 11" paper. You may write on both sides. You may type it on a computer.
- The test is closed book, closed laptop, closed phone, closed friends. You can only use the single sheet of paper and whatever is in your brains. You may also bring a calculator to perform basic arithmetic.
- Friday, October 9: No class during Fall Break
Week 9
- Monday, October 12: Finish File IO slides
- Wednesday, October 14: Describe word search project
- Friday, October 16: GUI Components
- Project 7: Word Search Solver
- Due Monday, October 26
- If your program cannot correctly solve the biggest puzzle with the biggest dictionary searching in all directions in less than 30 seconds on a reasonably modern computer (not considering extremes of high end gaming rigs or really old netbooks), then you need to try to improve your code's performance. Approaches that work fine with a small word list or puzzle may not scale well.
- Word list files for testing
- animals.txt: list of animals
- shuffleAnimals.txt: same list of animals, not in alphabetical order (results using this word list should be identical to those using the alphabetized animals list)
- dictionary.txt: a very large list of words
- words5to10.txt: words from dictionary.txt that are 5 to 10 letters long
- words5orMore.txt: words from dictionary.txt that are 5 or more letters long, not in alphabetical order
- Sample puzzle files
- Expected output for various word list, puzzle, and direction combinations
Week 10
- Monday, October 19: GUI Events
- Wednesday, October 21: Custom Painting
- Friday, October 23: Timer examples with Bouncing Ball and Etch-a-Sketch
- SwingWorker example with Connect Four
Week 11
- Monday, October 26: Describe layout practice project
- Jar Files
- Example loading image from file in jar
- Wednesday, October 28: Look at my inheritance and exceptions solutions
- Friday, October 30: LineSorter solution
- Look at some of the midterm problems
- Project 8: GUI Layout Practice
- Due Friday, November 6
- project8demo.jar Executable jar file containing my example layout.
- You will not be using this in your program, but if you run it, you will be able to play with my example.
Week 12
- Monday, November 2: Brooke was out sick, no lecture or office hours
- Wednesday, November 4: Describe Snake project
- Friday, November 6
- Project 9: Snake Game: Part 1 -- Game Manager
Week 13
- Monday, November 9
- Wednesday, November 11
- Friday, November 13
Week 14
- Monday, November 16
- Wednesday, November 18
- Friday, November 20
Week 15
- Monday, November 23
- Wednesday, November 25
- Friday, November 27: No class during Thanksgiving Break
Week 16
- Monday, November 30
- Wednesday, December 2
- Friday, December 4: Review for final
Finals Week
- Wednesday, December 9 (10am - noon) Final Exam
- Please note that this is not the usual lecture time!
- You may bring with you a single sheet of 8.5" x 11" paper. You may write on both sides. You may type it on a computer.
- The test is closed book, closed laptop, closed phone, closed friends. You can only use the single sheet of paper and whatever is in your brains.
- You may bring a calculator to perform basic arithmetic.
- It's finals week, so I won't be having my usual office hours, but will be checking my email and Canvas messages.