CSCI-101 Programming I
Spring 2025

This course is an introduction to computer programming using Java. I use a traditional lecture format to teach the course material. The primary learning objectives are to have students learn how to write very simple statements using the various constructs in the language and to understand how the program is modifying the contents of the computer's memory while it runs.

  • Exams require students to demonstrate that they can utilize all of the various language features taught in the course. I am not concerned with whether or not they can solve tricky problems in 50 minutes. The same goes with quizzes.
  • Students are required to write notes. No computers are allowed in lecture to eliminate distractions.
  • I administer weekly quizzes in recitation (i.e. lab) based on the material taught during the previous week. I provide sets of problems each week for student to use to prepare for the quizzes.
  • Students will perform their work on a Linux operating system hosted on a college server.
  • Students learn on Linux, compiling and running their code from the command line. Students write using vi. We do not use IDEs since IDEs have features like autocomplete that give students an unhelpful crutch at this stage of their development.
  • Students will use git to push their source code to GitHub for assistance and evaluation.

Coding Rules
  1. Save often
  2. Compile often
  3. Indent consistently
  4. Write code for the future maintainer

Course Content
Jan 8: Syllabus Review
Jan 10: Chalk board lecture Computer architecture, binary number system
Jan 13: Chalk board lecture Base 10 <-> Base 2 conversions, binary arithmetic, bitwise OR
Jan 14: Lab 1
Jan 15: Chalk board lecture bitwise AND and NOT, Algorithms
Jan 17: Chalk board lecture Algorithms cont., primitive types, variable declarations, Hello World
Jan 21: Chalk board lecture ssignment statements, *, /, +, -, %, ()
Jan 23: Linux Commands Linux and Vi Commands
Jan 25: Chalk board lecture
Jan 27: Exam 1
Jan 29: Code print(), printf(), println(), Scanner
Jan 31: Code Scanning doubles, Strings, chars
Feb 3: Code Comparison, relational, boolean operators
Feb 5: Code conditionals
Feb 10: Code while-loops
Feb 14: Lecture code while-loops, do-while loops
Feb 17: Lecture code for-loops
Feb 18: Lab5a, Lab5b for-loops
Feb 19: Lecture code break, continue, ?:, switch
Feb 21: Lab6 prep for exam
Feb 24: Exam 2
Feb 25: Lecture code methods
Feb 26: Lab 7 methods
Feb 28: Lecture code arrays
Mar 11: Lab 8 Exam 2
Mar 12: Lecture code Arrays
Mar 14: Lab 9 Arrays
Mar 17: Lecture code 2D Arrays
Mar 18: Lab 10a, Lab 10b Arrays & 2D Arrays
Mar 18: Lecture code 2D Arrays and arrays
Mar 21: Lecture code Test prep
Mar 26: Lecture code Printing to files with PrintWriter
Mar 28: Lecture code, Lecture code scores.txt scores.csv Reading from files with Scanner
Mar 31: Lab 11 2D Arrays & Scanning Files
Apr 2: Lecture code, Calculator.java Random number generator
Apr 4: Lecture code, Random integers, characters, unicode characters
Apr 7: Lecture code,Box.java Entity classes: constructors, instances
Apr 8: Lecture code,Box2.java Entity classes: fields, constructors, getters, setters
Apr 9: Lab 12 Random integers, entity class, game
Apr 11: student.data, Student.java, Application Entity class, scanning file, array, PrintWriter
Apr 14: Lab 13 Scanning file, Entity class, Printwriter, arrays
Apr 15: Lab 14 Scanning file, Entity class, Printwriter, arrays
Apr 22: Lab 15 Printwriter, array, random numbers
Apr 23: Lecture code do-while, ?:, swap, PrintWriter, Scanner fin