CSCI-101 Programming I
Fall 2023

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 maintainer

Course Content
Words to Live by
Aug 21
✧Work hard; Amazing opportunities exist for those that do
Aug 28
Aug 28: code Variable declarations,initialization and assignment; types; Scanners
Aug 30: code Variable declarations,initialization and assignment; types; Scanners; arithmetic operators
Sep 1: code boolean expressions, conditional (if-else) statements, compound boolean expressions
✧ Type and run the code in your notes immediately after class.
Sep 4
Lab 3: Lab3aLab3bLab3c
Sep 4: code Primitive vs Reference types; bits and bytes; Scanners; comparators; conditionals
Sep 6: code, Abs, Min3 Reading char from keyboard; Conditionals; Scope of variables
Sep 8: code operator precedence; methods
✧ Ask your professors questions at their office hours.
Sep 11
Lab 4: Lab4
Sep 11: code Methods; ?: operator
Sep 13: code modulus operator (%), unsigned integer representation, unsigned integer to binary conversion, Math class, long and float types
Sep 15: code Arrays
✧ Form a study group and meet after each lecture to discuss the lecture material.
Sep 18
Lab 5: Lab5
Sep 18: code Arrays, while-loops
Sep 20: code Arrays, methods
Sep 22: code While-loops
✧ Don't smoke weed.
Sep 25
Lab 6: Lab6
Sep 25: code for-loops, arrays
Sep 27: Quiz 3, Exam 1 Review Key Exam 1 review
Sep 29: Exam 1, Answer Key Methods
✧ Practice, practice, practice.
Oct 2
Lab 7: Lab 7
Oct 2: No class - fall break
Oct 4: code for-each loops, var-args, printf
Oct 6: code 2D arrays
✧ Do extra Kattis problems in your free time.
Oct 9
Lab 8: Lab8aLab8bLab8c
Oct 9: code Review of loops, arrays, 2D arrays
Oct 11: code do-while loops, switch statements, break, continue
Oct 13: code, Quiz 4 arrays, break, boolean flag
✧ Attend Knowledge Chase events.
Oct 16
Lab 9: Lab9aLab9bLab9c
Oct 16: code Array operations
Oct 18: Class cancelled
Oct 20: Review and Array Quiz
✧ Read slashdot and other tech news sites.
Oct 23
Lab 10: Lab10aLab10bLab10cLab10dLab10e
Oct 23: Quiz 5, ArrayUtil, code Utility classes with static methods
Oct 25: IntArray, IntMatrix, code Lab10, Square an array
Oct 27: Exam II
✧ Be kind.
Oct 30
Lab 11: Lab11aLab11b
Oct 30: Student, code Entity classes
Nov 1: code, quizScores.txt File I/O using Scanner, useDelimiter, and PrintWriter
Nov 3: Course, code Model classes review, PrintWriter
✧ Plan your day. Set a time each day to review your notes.
Nov 6
Lab 12: lab12alab12blab12clab12dlab12elab12f
Nov 6: no class
Nov 8: Cat,code entity class, this, overriding equals
Nov 10: Point,code entity class, writing and reading data to/from files
✧ Don't give up.
Nov 13
Lab 13: lab13alab13blab13c
Nov 13: Point,Entity, code Overriding equals, Arrays utility class
Nov 15: code, Vehicle overriding equals
Nov 17: code, Car, Vehicle inheritance, extends keyword, super keyword
✧ Fill in the gaps in your knowledge.
Nov 20
No Labs this week
Nov 20: Exam 3 O
Nov 22: Thanksgiving Break
Nov 24: Thanksgiving Break
✧ Take your PS5 and XBox home.
Nov 27
Lab 14: lab14
Nov 27: Lecture cancelled
Nov 29: code Final Exam Review
Dec 1: code Final Exam Review
✧ Limit play. Devote yourself to your final exams!