Computer Programming Fundamentals
Monday & Wednesday 11:00–12:50 — CENT B146
AND
Monday & Wednesday 5:00–6:50 — CENT B146
Prof. Patrick Gage Kelley
pgk @ cs.unm.eduWe 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
Introduction
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.
Topics
- variables,
- basic program flow,
- conditional branching (if statements),
- loops (for, while),
- arrays,
- input/output,
- objects and classes,
- basic graphics programming,
- basic HTML & CSS,
- and more.
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.
Assignments
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.
Projects
There will be two larger projects which you will create throughout the semester. Details will follow as they approach.
Tests
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.
Expectations
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.
Grading
- Smaller assignments – 25%
- Larger projects – 25%
- Midterm – 20%
- Final – 20%
- Class attendance, participation – 10%
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.
- Is this class for people who have never programmed before?
Yes and no. This class is the first step towards getting a Computer Science degree at UNM. People will come from mixed backgrounds. This course is designed so that everyone who is interested and passionate about programming can excel. If you have never programmed before but *want* to, you can succeed. - How do I submit assignments?
Great question. Assignments should be submitted to UNMcs152 @ gmail. Code should be submitted as .java, .pde, or zipped files. Code should compile and run. From assignment 2 and forward, if a question has a printer symbol next to it,that question should be turned in on paper (for Dr. Kelley to grade).
Schedule
- Monday August 19
Discussion: Introductions and class goals
Discussion: What is Computer Science? What is code? - 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. - Monday August 26
Discussion: String Functions, booleans, if statements
Coding: Strings - Wednesday August 28
Discussion: If-else statements, scope
Coding: Branching
Assignment 2 – due Wednesday September 4. - Monday September 2
Labor Day. No class. - Wednesday September 4
Discussion: While loops
Coding: Looping
Assignment 3– due Wednesday September 11. - Monday September 9
Discussion/coding: Review of loops, statements, etc. - Wednesday September 11
Discussion: Methods
Coding: Creating new methods
Assignment 4: Welcome to methods // starter code – due Wednesday September 18. - Monday September 16
Discussion: Processing graphics
Coding: Squares. Triangles. Draw loops.
- Wednesday September 18
Discussion: More Arrays
Coding: Using arrays in methods
Assignment 5: Welcome to arrays // starter code – due Monday September 30. - Monday September 23
Morning class cancelled
Evening class available to any students who want review.
- Wednesday September 25
Discussion: Review, practice test!
Joel's midterm from Spring
My practice midterm - Monday September 30
Discussion: The rest of the class.
Discussion: Java vs. Processing.
- Wednesday October 2
Midterm! - Monday October 7
Discussion: Introduction HTML/CSS
- Wednesday October 9
Discussion: HTML/CSS, making a website happen
Sample websites: dogz and movies Coding: HTML/CSS
Assignment 6. – due Wednesday October 16. - Monday October 14
Discussion: Midterm results, answers, etc.
- Wednesday October 16
Discussion: An Objects/Classes primer. - 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.
- Wednesday October 23
Discussion: More with Objects and Classes. - Monday October 28
Discussion: More with Objects and Classes. (still)
House/Window code from class.
Pizza/Customer code from class.
- Wednesday October 30
Just a work day. And only in the evening.
Evening class cancelled, for work help come to morning class. - Monday November 4
Discussion: For loops, calling methods on one's self, .
Assignment 7b. // starter code – due Wednesday November 13.
- Wednesday November 6
Discussion: Code style.
Code Standard Document. - Monday November 11
Discussion: Sorting arrays.
- Wednesday November 13
Work day. Full project 7 due. - Monday November 18
Discussion: Recursion
- Wednesday November 20
Discussion: Project 8.
Discussion: Creating Asteroids.
Discussion: ArrayList.
Assignment 8. // starter code (processing) // starter code (command line)
- Monday November 25
Final Exam Review
Fall 2012
Practice Final Fall 2013 - Wednesday November 27
Thanksgiving(ish). No class. - Monday December 2
More final exam review, Project 8 questions
- Wednesday December 4
Second "Quiz"
SPECIAL ROOM: CENT-1041 (it's a big auditorium)
- Work Times
Tuesday December 10 – 4-6pm
Wednesday December 11 – 3-6pm
- THURSDAY December 12
Project 8 Due Date.