CSCI-101 Programming I

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. Indent consistently
  2. Compile often

Course Content
Jan 5
Lab 0: Using ssh to connect to cs.bridgewater.edu, Linux commands
Jan 6: Hello computer hardware, VonNeumann architecture, System.out, the compilation and * execution process,
✧Amazing opportunities exist for those that work hard
Jan 9
Jan 9: Scanner the compilation process and how memory acts as a workspace for a running program, Scanner class
Jan 11: Adder RAM, Scanner, System.in, identifiers, variable declarations, reference vs. primitive types
Jan 13: Primitive Types primitive types, arithmetic symbols
✧ Ask questions in class and after class to fill in the gaps in your knowledge.
Jan 16
Lab 2: Lab2aLab2bLab2cLab2dLab2ePush to GitHub
Jan 18: Conditionals modulus, ==, conditionals
Jan 20: Operators logical operators, arithmetic operators, operator precedence
✧ Complete all of your labs before the following Monday.
Jan 23
Jan 23: Operators operators, casting, printf
Jan 25: While-loops printing a string a finite number of times
Jan 27: Quiz review while-loops, swapping values
✧ Review the lecture material before the next lecture.
Jan 30
Jan 30: String's charAt() method delimiter, whitespace, character indices, charAt(), length()
Feb 1: Electric out in building
Feb 3: Loops while-loops, for-loops, do-while loops, break, continue
✧ You guys rock! Keep asking great questions.
Feb 6
Feb 6: Exam 1
Feb 8: For-loops and Arrays
Feb 10: UNIX commands
✧ Don't smoke weed.
Feb 13
Feb 13: Methods
Feb 15: Array Methods
Feb 17: Static keywordPlayer
✧ Open your laptop and just simply experiment with the code.
Feb 20
Lab 7: 1D Arrays2D Arrays2D Arrays
Feb 20: 2D Arrays
Feb 22: Printf
Feb 24: Big Quiz
✧ Be happy!
Mar 6
Lab 8: 2D Maze
Mar 6: Switch
Mar 8: Exam 2
Mar 10: File I/O
✧ Play with code.
Mar 13
Mar 13: Var-args, ?:
Mar 15: Bucket, Driver
Mar 17: Bucket, Driver
✧ Start a group project.
Mar 20
Mar 20: Vehicle, Driver
Mar 22: Vehicle, Driver
Mar 24: Vehicle, SportsCar, Driver
✧ Find a summer internship.
Mar 27
Lab 11: SuperclassSubclassWriterAppStore
Mar 27: Vehicle, SportsCar, Driver
Mar 29: Tech chat Mar 31: Super,Sub,Drover
✧ Code, Code, and Code some more
Apr 3:
Guest speaker
Apr 3: data.txt,Driver,nodupes.txt
Apr 5: Exam
Apr 7: Easter break
✧ Stay away from da bomb!
Apr 10:
Hot Ones Challenge
Apr 10: Easter break
Apr 12: Control Statements Review I
Apr 14: Arrays Review
✧ Fill in the gaps in your knowledge.
Apr 17:
No lab
✧ Good luck on your finals!