CS152, Fall 2020

Computer Programming Fundamentals
Home
Schedule
Syllabus
Style Guidelines

Note: Schedule is subject to change.

Day Topic Assignment Due
Week 1: August 17, Introduction
Monday Introduction to the class
slides
Survey, due Monday 8/17 by midnight.
Wednesday Introduction cont.
Compiling and running a program
How a program executes
Processing
Setup and Draw
Coordinate system
Interaction
Comments
slides
Due before class on Wednesday:
1. Download and install Processing.
2. Create a post introducing yourself on Piazza.
3. Create an account on repl.it.
See Learn for more important details.
Friday Processing introduction cont.
Color
Lines
Shapes
Randomness
slides
Week 2: August 24, Foundations
Monday Variables and data types
Rectanges
Basic text
slides
Assignment 1: Short Essay: What Excites you about Computing?
Wednesday Expressions and operations
Conditionals: if else
slides
Friday Iteration, loops: while
Style guidelines
slides
Week 3: August 31, Functions
Monday Functions introduction
Variable scope
slides
Assignment 2: First programming assignment
Wednesday Functions cont.
Variable scope cont.
For loops
Trigonometry review
slides
Friday Functions cont.
For loops cont.
Simple animation and phyics: a bouncing ball
slides
Week 4: September 7, Arrays
Monday NO CLASS, LABOR DAY
Wednesday Intro to Arrays
Arrays and for loops
slides
Assignment 3, on Learn
Friday Arrays cont.
Graphs
Visualizing arrays
slides
Week 5: September 14, Arrays Cont.
Monday Simple data visualization
Importing and parsing data files
NM Covid data
e.e. cummings poem
[i carry your heart with me(i carry it in]

Bar charts
slides
Wednesday Simple data visualization cont.
Calculations with arrays: max
Plotting different sets of data
map() function
slides
Friday Simple data visualization cont.
Calculations with arrays: moving average
Array Data Type
slides
Assignment 4
Week 6: September 21, Classes and Objects
Monday Introduction to classes and objects
Return to the bouncing ball program
slides
Wednesday Classes and objects cont.
Classes, arrays, and type
Reference vs. value
slides
Friday Classes and objects cont.
Additional methods
Collision detection
Objects as parameters
slides
Week 7: September 28, Classes and Objects Cont.
Monday Arrays of objects
Strings
Collision detection, many objects
slides
Assignment 5
Wednesday Arrays of objects
Strings
Constants and the final keyword
String comparisons and the equals() method
Arrays and objects as method parameters and outputs
trees.txt
slides
Friday Copying objects and arrays, the clone() method
Sorting items in an array
slides
Week 8: October 5, Midterm Review
Monday Review
slides
Assignment 6
Wednesday NO CLASS, UNM BREAK
Friday Review
slides
Midterm Exam
3 hour exam
24 hour window: Friday 1pm - Saturday 1pm
Week 9: October 12, Recursion and Fractals
Monday Midterm solutions
Introduction to recursion
Factorial
slides
Wednesday Introduction to fractals
Trees
slides
Friday Fractals cont.
Trees cont.
Saving images
Fractal structures in nature
slides
Week 10: October 19, "Regular" Java
Oracle's Java reference
W3schools Java reference
Monday Introduction to Java
Processing vs. Java
Introduction to the command line
javac and java
Jaeren's handy command reference
slides
Wednesday Java cont.
Scanner class
Fibonacci sequence
Strings
Searching for a letter in a string
Counting letters example
slides
Friday Counting letters example cont.
Tester code for Assignment 7
slides
Week 11: October 26, Cellular Automata
Monday Introduction to Cellular Automata
One Dimensional Cellular Automata
slides
Assignment 7
Wednesday One Dimensional Cellular Automata cont.
Wolfram's page on Elementary Cellular Automata
We worked through Rule90 in class
1D CA patterns in nature
slides
Download and install IntelliJ
Use the Community version.
Friday Guest lecture: Drew Trujillo
Week 12: November 2, Cellular Automata cont.
Monday Introduction to IntelliJ
IntelliJ Tutorial
2D Cellular Automata
Game of Life
slides
Wednesday Game of Life cont.
Wolfram's A New Kind of Science
slides
Friday Engineering Student Success Center
Game of Life cont.
Cellular Automata as models of complex systems
slides
Week 13: November 9, Program Organization
Monday Using formatting and comments as you write code
Consistently using variables and methods to create clear readable code
slides
Assignment 8
Wednesday Designing a program
1. Defining Classes
2. Defining variables
3. Defining methods (no code in them, just names and parameters)
Introduction to keyword "static"
slides
Friday Program design cont.
slides
Week 14: November 16, Interactivity
Monday Program organization cont.
Writing methods for the monster program
slides
Assignment 9 (on Learn)
Wednesday Interactivity
Using input from the keyboard
Listeners in Java
KeyListeners
SampleCode.java: sample code for class and lab
slides
Friday Interactivity cont
Implementing "wrap around" movement for on-screen objects
Collision detection
slides
Week 15: November 23, Interactivity and Animation
Monday Collision detection cont.
Moving and animating objects on screen
slides
Assignment 10, part one
Wednesday Creating arrays of objects in your game
Making objects disappear
Keeping track of your score
slides
Friday NO SCHOOL THANKSGIVING BREAK
Week 16: November 30, Review
Monday Buffering
Organizing game code
Create your own website: https://webhostinginfo.unm.edu/ slides
Wednesday Review for final: Static
slides
Assignment 10, part two
Friday Review for final
slides
Week 17: December 7, Finals Week
Tuesday December 8th, 2-3pm, Final Exam Review
In our regular Zoom room
Wednesday December 9th, Final Exam
4 hour exam
24 hour window: Wednesday 10am - Thursday 10am
Final Exam