CSCI-101 Programming I
Fall 2024

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
Words to Live by
Aug 26
Aug 26: No class
Aug 28: Notes on the board Syllabus, Variable definitions, assignment statements, primitive types
Aug 30: Notes on the board assignment statements, + - / * operators, print statements
✧Work hard; Amazing opportunities exist for those that do.
Sep 2
Lab 2 Lab2aLab2bLab2cLab2dLab2eLab2f
Sep 2: Lecture code 1, Lecture code 2 Writing a Complete Programs, Use of Scanner
Sep 4: Lecture code Precedence, post-pre increment op, modulus op, Math library
Sep 6: Lecture code Boolean operators, ==
✧Surround Yourself With People Who Came to BC to Learn
Sep 9
Lab 3 Lab3aLab3bLab3c
Sep 9: Lecture code Use of Scanner
Sep 11: Lecture code conditionals, string equality, ?:
Sep 13: Lecture code 1, Lecture code 2 Conditionals, ?:, switch, while-loop
✧ Form or join a study group.
Sep 16
Lab 4 Lab4
Sep 16: Lecture code ?:, while-loops, quiz1
Sep 18: Lecture code, Quiz 2 key infinite loops with break, do-while loops
Sep 20: Lecture code 1, Lecture code 2, Practice exam while-loop, String's charAt method, String equality
✧ Sign up for a tutor. It's free!
Sep 23
Lab 5 Lab5
Sep 23: Exam 1
Sep 25: Lecture code for-loops, arrays
Sep 27: Lecture code min, max, sum, mean, search for arrays
✧ Reflect on your study habits and make changes if necessary
Sep 30
Lab 6 Lab6
Sep 30: Lecture code arrays, methods
Oct 2: Class canceled
Oct 4: Lecture code Methods
✧ You must excel in order to get your dream job.
Oct 7
No lab
Oct 7: Fall break
Oct 9: Lecture code 2D arrays
Oct 11: Lecture code, Practice exam 2D arrays
✧ Learn another programming language with your peers while learning Java
Oct 14
Lab 7 Lab7
Oct 14: PrintWriters, File Scanners, data.txt, data2.txt, matrix.txt Reading and Writing to files
Oct 16: Lecture code Method, array, 2D array review
Oct 18: Exam 2
✧ Practice solving problems on open.kattis.com
Oct 21
Lab 8 Lab8
Oct 21: Lecture code, Student.java Entity classes: fields, constructors, setters, getters
Oct 23: Lecture code, Student.java Entity classes: fields, constructors, setters, getters
Oct 25:Lecture code, Student.java Overriding toString, overriding equals
Oct 28
Lab 9 Lab9aLab9b
Oct 28: Lecture code, Box.java, box.data Box entity class, Reading data from file, fin.useDelimiter()
Oct 30: Movie.java Quiz (not graded)
Nov 1: Quiz 3 - Entity classes
Nov 4
Lab 10 Lab10aLab10b
Nov 4: Quiz 3 redo
Nov 6: Circle.java, Lecture code, circles.txt Quiz Review, reading from file, writing to file
Nov 8: Lecture cancelled
Nov 11
Lab 11 Lab11
Nov 11: Exam 3
Nov 13: lecture code Review: Scanner, charAt, while-loops
Nov 15: lecture code Review: switch, do-while loops
Nov 18
Lab 12 Lab12
Nov 18: lecture notes Review: arrays, for-loops
Nov 20: lecture notes Review: arrays, 2D arrays
Nov 22: lecture notes
Dec 2
Lab 13 Lab13
Dec 2: Exam3, SoccerPlayer Review: Exam 3
Dec 4: No class
Dec 6: Bear, lecture notes Review: entity classes