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: Friday 2:00pm-4:00pm via Zoom, Tuesday 1:30pm-3:00pm in person, or by appointment
Lectures
Lectures are 11:00 am - 11:50 am MWF in Centennial Engineering Center 1041
Labs
Lab 001 (CRN 36966)
- Time: 2:00 pm - 2:50 pm W
- Location: Centennial Engineering Center B146
- Grader: Beckett Dunlavy
Lab 002 (CRN 32295)
- Time: 1:00 pm - 1:50 pm F
- Location: Centennial Engineering Center B146
- Grader: Steven Beltz
Lab 003 (CRN 32296)
- Time: 2:00 pm - 2:50 pm M
- Location: Centennial Engineering Center B146
- Grader: Ashley Hammer
- Email: ahammer8@unm.edu
- Office Hours: Monday and Wednesday from 3-4pm in FEC 2000
Lab 004 (CRN 34022)
- Time: 1:00 pm - 1:50 pm W
- Location: Centennial Engineering Center B146
- Grader: Brandon Hidalgo
- Email: bzhidalgo@unm.edu
- Office Hours: Tuesday 12:30-1:30pm, 2nd floor centennial library
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.
- Updated 2024-01-22 with office hours
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 15: Martin Luther King Day
- University Holiday: No classes or labs today
- Wednesday, January 17: Welcome and Intro
- Friday, January 19: Java Basics
- No lab meetings this week
- The Monday holiday throws off the schedule a bit, so here are no lab sections meeting this week, only lectures.
- The lab rooms should still be available if you want to use them as a working space.
- This week: make sure you have installed the JDK and whichever text editor you are using
- Make sure you have set up your path environment variable so you can compile and run on the command line
- Test your setup by compiling and running the ArgSum example a few times with different arguments
- Lab 1: FizzBuzz
Week 2
- Monday, January 22: Continue Java Basics (left off around for loops)
- Tuesday, January 23: No office hours for Brooke today (out with a sick kid)
- Wednesday, January 24: Continue Java Basics
- Friday, January 26: Continue Methods and Classes
- Lab 2: Gomoku
Week 3
Week 4
- Monday, February 05: Continue More class stuff
- Note on the feature y'all found last week: running a java program directly from a source file works when the whole program is in a single source file (see JEP 330) since JDK 11, but you still need to separately compile and run separately for more complicated programs.
- Here's the switch expression feature I mentioned: JEP 361
- Wednesday, February 07: Go over quiz 3
- Friday, February 09: Exceptions
- Lab 3: Inheritance
Week 5
- Monday, February 12: Go over quiz 4
- Wednesday, February 14: Continue keywords
- Friday, February 16: Go over quiz 5
- A lot of good questions today, so we'll finish keywords next week.
Week 6
- Monday, February 19: Finish keywords
- Tuesday, February 20: Brooke is home with a sick kid today.
- I'll try to hold my office hours over Zoom during the regular in person time, but will post an announcement on Canvas if that doesn't work out.
- Wednesday, February 21: Java Collections Framework
- Friday, February 23: Continue Collections Interfaces
- Lab 4: Exceptions
- Due
Monday, February 26 (Date was wrong on Canvas for a few days, sorry!) Wednedsday, February 28
- Once you have implemented your classes, use BankingTest to test them.
Week 7
- Monday, February 26: More Collections
- We're taking long enough on Collections that I'm extending lab 4 by a couple of days. (I don't really think you need it, but I'm not ready to assign lab 5 yet)
- Wednesday, February 28: Brooke is out sick today
- Friday, March 01: Go over quiz 6
Week 8
- Monday, March 04: Continue equals and hashcode
- Coding demonstration using a Map to count occurances of different words
- Wednesday, March 06: Review for midterm
- Friday, March 08: 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 18: Describe piano assignment
- Wednesday, March 20: Begin IO Streams
- Had a few interesting digressions about java.util.stream and what it means for something to be deprecated in the API
- Friday, March 22: Continue IO Streams
- Lab 5: Piano Simulation
Week 10
Week 11
- Monday, April 01: Describe evil hangman assignment
- Wednesday, April 03: * Lecture is relocated to MITCH 122 through
April 12 end of term *
- Friday, April 05: Continue GUI Components
- Lab 7: Evil Hangman
Week 12
* Monday, April 08: Brooke is out of town, so the lecture is canceled.
* Tuesday, April 09: Brooke is still out, so her office hours are canceled
* Wednesday, April 10: GUI Events
* Friday, April 12: Continue events
* Begin Custom Painting
Week 13
- Monday, April 15: Continue Painting
- Wednesday, April 17: Animation with Timer
- Etch-a-Sketch
- Connect Four example of background tasks using SwingWorker
- Friday, April 19: Jar Files
- Lab 8: GUI Layout Practice
- Due Friday, April 26
- lab8demo.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 lab8demo.jar" to run the demo program.
Week 14
- Monday, April 22: Discuss space invaders assignment
- Wednesday, April 24: Swing stuff, messing with Etch a Sketch
- Friday, April 26: Bubble shooter example
- Lab 9: Space Invaders Part 1: Game Objects
- Lab 10: Space Invaders Part 2: Full Game
- Due Tuesday, April 30
- Make sure to submit both a jar file and a README document
- Make sure your source code is included in the jar file!
Week 15
- Monday, April 29
- Wednesday, May 01
- Friday, May 03: Review for final exam
- I may be running a few minutes late since I'm giving a final exam for my other class in another building right before your lecture.
Finals Week
- Wednesday, May 8 (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 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.