Computer Programming Fundamentals

Monday & Wednesday 11:00–12:50 — CENT B146
Monday & Wednesday 5:00–6:50 — CENT B146

Prof. Patrick Gage Kelley

pgk @ cs.unm.edu

We have TAs! They have office hours to help you:
Emilia: Mondays, FEC 318, noon-2pm
Emilia: Wednesdays, FEC 318, 1pm-3pm
Cameron: Fridays, FEC 309, noon-2pm
Also CS tutoring can help you: schedule


CS152 is an introduction to the art of computing. This course has several goals. Students who successfully complete the course should have a firm grasp on creating small programs in Java, should be able to solve problems with code, should have a more full idea of what Computer Science as a field is, and most importantly not be afraid to dive into code!

Required(ish) Textbook: Java, A Beginner's Guide, 5th Edition, Herbert Schildt Amazon link.


Class Format

This semester we are trying something new: a hybrid laboratory/lecture format. That means all classes will be in a computer lab and lecture and lab will be interchanged as needed. This is an experiment, and we welcome feedback on how it is working throughout the semester.


Nearly every week you will have a programming assignment of some form. These will start off as small assignments, and get longer throughout the semester. These assignments should be printed out and turned in in class as lab write-ups, unless otherwise specified. There will be approximately eight "lab" assignments throughout the semester.


There will be two larger projects which you will create throughout the semester. Details will follow as they approach.


There will be a midterm and a final. The midterm will be one-hour, the final, two. The tests are closed book/Internet/friends. You will be expected to write code (from scratch) on the tests. Do not let this surprise you! Sample tests will be provided and explained before each, the test questions will not be surprises or tricks.


You are expect to attend class, to have completed the assigned readings, and to participate in class discussions, and ask questions. During "lab" time you are still expected to be present to work on assignments, help your peers, and expand your programming knowledge. While I encourage you to work together on assignments, code should be written individually and not shared. To help a classmate explain how you did something in words and concepts, not by handing them your code.

What about the Internet? that place is full of code! Yes, it is, but often in a different language or built for a different purpose. Feel free to use the Internet, and when you do it is of utmost importance for you to cite your sources. If you borrow code from the Internet, include who you borrowed it from and a link to get to that code snippet in your programs comments. And, reading code online is great practice for getting used to how other people write code (everyone is a bit different), you will often need to understand it to leverage it.


Late assignments are really greatly disliked. Late projects/assignments receive a 5% (of total worth, not grade) per day penalty: Regardless of the reason. If something is going to be late and known in advance, email me, but don't expect exceptions they are very rare.

Frequently Asked Questions

Have a question? Email me (see top of the page). Frequent questions will be posted here.


  1. Monday August 19
    Discussion: Introductions and class goals
    Discussion: What is Computer Science? What is code?
  2. Wednesday August 21
    Discussion: Welcome to Processing (download free at: processing.org)
    Coding: Exploring Processing
    Assignment 1: A duo of small programs – due Wednesday August 28.
  3. Monday August 26
    Discussion: String Functions, booleans, if statements
    Coding: Strings
  4. Wednesday August 28
    Discussion: If-else statements, scope
    Coding: Branching
    Assignment 2 – due Wednesday September 4.
  5. Monday September 2
    Labor Day. No class.
  6. Wednesday September 4
    Discussion: While loops
    Coding: Looping
    Assignment 3– due Wednesday September 11.
  7. Monday September 9
    Discussion/coding: Review of loops, statements, etc.
  8. Wednesday September 11
    Discussion: Methods
    Coding: Creating new methods
    Assignment 4: Welcome to methods // starter code – due Wednesday September 18.
  9. Monday September 16
    Discussion: Processing graphics
    Coding: Squares. Triangles. Draw loops.
  10. Wednesday September 18
    Discussion: More Arrays
    Coding: Using arrays in methods
    Assignment 5: Welcome to arrays // starter code – due Monday September 30.
  11. Monday September 23
    Morning class cancelled
    Evening class available to any students who want review.
  12. Wednesday September 25
    Discussion: Review, practice test!
    Joel's midterm from Spring
    My practice midterm
  13. Monday September 30
    Discussion: The rest of the class.
    Discussion: Java vs. Processing.
  14. Wednesday October 2
  15. Monday October 7
    Discussion: Introduction HTML/CSS
  16. Wednesday October 9
    Discussion: HTML/CSS, making a website happen
    Sample websites: dogz and movies Coding: HTML/CSS
    Assignment 6. – due Wednesday October 16.
  17. Monday October 14
    Discussion: Midterm results, answers, etc.
  18. Wednesday October 16
    Discussion: An Objects/Classes primer.
  19. Monday October 21
    Discussion: Diving deeper into Objects and Classes.
    Assignment 7. // starter code – due Wednesday October 30.
    House/Window code from class.
    Pizza/Customer code from class.
  20. Wednesday October 23
    Discussion: More with Objects and Classes.
  21. Monday October 28
    Discussion: More with Objects and Classes. (still)
    House/Window code from class.
    Pizza/Customer code from class.
  22. Wednesday October 30
    Just a work day. And only in the evening.
    Evening class cancelled, for work help come to morning class.
  23. Monday November 4
    Discussion: For loops, calling methods on one's self, .
    Assignment 7b. // starter code – due Wednesday November 13.
  24. Wednesday November 6
    Discussion: Code style.
    Code Standard Document.
  25. Monday November 11
    Discussion: Sorting arrays.
  26. Wednesday November 13
    Work day. Full project 7 due.
  27. Monday November 18
    Discussion: Recursion
  28. Wednesday November 20
    Discussion: Project 8.
    Discussion: Creating Asteroids.
    Discussion: ArrayList.
    Assignment 8. // starter code (processing) // starter code (command line)
  29. Monday November 25
    Final Exam Review
    Fall 2012
    Practice Final Fall 2013
  30. Wednesday November 27
    Thanksgiving(ish). No class.
  31. Monday December 2
    More final exam review, Project 8 questions
  32. Wednesday December 4
    Second "Quiz"
    SPECIAL ROOM: CENT-1041 (it's a big auditorium)
  33. Work Times
    Tuesday December 10 – 4-6pm
    Wednesday December 11 – 3-6pm
  34. THURSDAY December 12
    Project 8 Due Date.