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:
Tuesday 2pm-4pm via Zoom,
Friday 1pm-3pm in person,
or by appointment
Lectures
Lectures are 11:00 am - 11:50 am MWF in Centennial Engineering Center 1041
Labs
Lab 002 (CRN 32295)
- Time: 2:00 pm - 2:50 pm Friday
- Location: Centennial Engineering Center B146
Lab 003 (CRN 32296)
- Time: 2:00 pm - 2:50 pm Monday
- Location: Centennial Engineering Center B146
Lab 004 (CRN 34022)
- Time: 1:00 pm - 1:50 pm Wednesday
- Location: Centennial Engineering Center B146
Lab 005 (CRN 81487)
- Time: 1:00 pm - 1:50 pm Monday
- Location: Centennial Engineering Center B146
Course Assistants
- Natalie Runyan
- Robbie Trujillo
Feel free to contact any of the assistants for help.
You aren't limited to the assistant for your own lab section.
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.
Handy References and Links
CS 251 Code Standards
Java
Editors and IDEs
Running graphical programs remotely from the CS machines (in case you were curious)
Past Exams
Lectures and Assignments
Week 1
- Monday, January 20: Martin Luther King Day
- University Holiday: No classes or labs today
- Wednesday, January 22: Welcome and Intro
- Friday, January 24: Starting with Java
- Important Notice re: Lab 001
- The lab section meeting F 1pm had a room scheduling conflict, so it has been canceled
- A new section 005 has been created meeting M 1pm instead.
- If you were in Lab 001, you will have to register for another section.
- Optional labs this week
- Between the Monday holiday and the change in lab times, not everyone will meet this week
- There will be a course assistant available during the lab time if you need some help or if you just want to use the room as a working space.
- Project 1: FizzBuzz
Week 2
- Monday, January 27: Continue Java Basics
- Wednesday, January 29: Continue Methods and Classes
- Friday, January 31: Continue with enum review
- Project 2: Gomoku
Week 3
- Monday, February 3: Describe Gomoku project
- Wednesday, February 5: Go over quiz 2
- Projector wasn't working, so we used the whiteboard and discussed the Gomoku project.
- Friday, February 7: Continue more class stuff
Week 4
Week 5
Week 6
Week 7
- Monday, March 3: IO Streams
- Wednesday, March 5: File IO
- Friday, March 7: Go over quiz 6
- Lecture is on Zoom today (link on Canvas)
- We were cut off early because of network problems
Week 8
- Monday, March 10: Finish quiz 6
- Postfix calc deadline is extended
- Survey for file IO and collections project is on Canvas
- Wednesday, March 12: Review for midterm
- Friday, March 14: 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 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.
Spring Break
- No lectures, labs, or office hours during spring break
Week 9
- Monday, March 24: Describe line sorting assignment
- Check file IO and collections survey. Looks like most people would like word search.
- Regular Expressions
- Wednesday, March 26: Go over desserts project solution
- Friday, March 28: Describe word search assignment
- Project 6: Line Sorter
Week 10
- Monday, March 31: GUI Components
- Wednesday, April 2: GUI Events
- Friday, April 4: Brooke is home with a sick child. Lecture is cancelled.
- Project 7: Word Search Solver
- Due Monday, April 14
- 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 11
- Monday, April 7: Custom Painting
- Brooke is out sick and teaching remotely today. Zoom link is on Canvas.
- Wednesday, April 9: Jar Files
- Friday, April 11: Describe layout practice project
- Project 8: GUI Layout Practice
- Due Monday, April 21
- 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.
- Use the command "java -jar project8demo.jar" to run the demo program.
Week 12
- Monday, April 14: Example programs (Space invaders, Tetris)
- Wednesday, April 16: Example program (bubble shooter)
- Describe upcoming gem match project
- Friday, April 18: Describe GemManager assignment
- Project 9: Gem Match Part 1 -- Gem Manager
Week 13
- Monday, April 21: Word search solution
- Wednesday, April 23: Describe Gem Match part 2
- Friday, April 25: Git version control (useful tool)
- Project 10: Gem Match Part 2 -- Full Game
- Due Tuesday, May 6
- Make sure to submit both a jar file and a README document
- Make sure your source code is included in the jar file!
Week 14
- Monday, April 28: Inheritance and composition when organizing code
- Wednesday, April 30: LayoutManager example + live code adding a slider
- Friday, May 2: Gem match issues
Week 15
- Monday, May 5: Live code making bubbles fall in bubble shooter
- Wednesday, May 7: Review
- Friday, May 9: Review for final exam
- Exam room change! The final next week will be in Dane Smith 123, not the usual lecture location. (Someone else needed the big auditorium, so we've been displaced.)
Finals Week
- Wednesday, May 14 (10am - noon) Final Exam
- The exam will be in
the regular lecture location. Dane Smith Hall 123.
- 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 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.