CSCI-101 Programming I
Fall 2021

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 RAM 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 create and work on a Linux Virtual Machine (VM) using Amazon Web Services (AWS).
  • Students learn on linux, compiling with javac and running their programs with java. 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 install git on their VM and push their source code to GitHub for assistance and evaluation.
Lecture Schedule
  • Wed, Aug 25: ¶1.1, 1.2
  • Fri, Aug 27: ¶1.3, 1.4, 1.7, 1.8,
  • Mon, Aug 30: ¶1.7, 1.8, 1.10; ¶2.1, 2.2, 2.4-2.6
  • Wed, Sep 1: ¶2.6-2.10 (skip 2.9.3 and 2.10.3)
    Scanner(code)
  • Wed, Sep 8: ¶2.12-2.19
    Scanner & Math classes (code)
  • Fri, Sep 10: ¶3.1-3.6, 3.15
    Arithmetic operators (code), Conditionals (if, else-if, else) (code)
  • Mon, Sep 13: ¶3.10,3.14
    Conditionals, logical ops, relational ops, ?: (code)
  • Wed, Sep 15: ¶3.13, 3.16
    scope (code), switch (code), debugging advice (text), while-loops (code)
  • Fri, Sep 17: ¶5.1,5.2,5.4,5.5,5.12
    while-loop, break, continue (code), for-loops(code)
  • Mon, Sep 20: ¶5.6-5.10
    infinite loops, do-while (code), for-loops, nested loops (code)
  • Wed, Sep 22: ¶4.1,4.2,4.6
    Math class, kb.hasNext(), Integer.Max_VALUE (code)
  • Fri, Sep 24: Exam 1
  • Mon, Sep 27: ¶6.1-6.10
    Methods (code)
  • Wed, Sep 29
    String.length(), Character wrapper class, Scanner.skip(), methods(code)
  • Fri, Oct 1
    (Lab 6b)
  • Wed, Oct 6
    (Exam 1 Key), Strings and String methods (code)
  • Fri, Oct 8: ¶7.1,7.2,7.5-7.7
    Arrays (code)
  • Mon, Oct 11
    Arrays, for-each, String.toCharArray() (code)
  • Wed, Oct 13: ¶7.9, 7.11
    Varargs, Selection Sort(code)
  • Fri, Oct 15: Debugging
    (ELI's code) (McG's code)
  • Mon, Oct 18: Command-line args, Static methods
    (Driver) (Awesome)
  • Wed, Oct 20: Exam 2 Review
    (code)
  • Fri, Oct 22: Exam 2
  • Mon, Oct 25: ¶ 8.1 - 8.4
    2D Arrays (code)
  • Wed, Oct 27
    Lab9(code)
  • Fri, Oct 29: ¶ 12.10, 12.11
    File I/O, Scanner, PrintWriter (code) (input1.txt)(out1.txt)
  • Mon, Nov 1
    Commandline args, Scanner.useDelimiter(code) (input2.csv)
  • Wed, Nov 3
    Scanning Strings, Finding Row and Column indices (code)
    Modeling Entities with Classes (Box.java)(BoxApp)
  • Fri, Nov 5: ¶ 9.1-9.5, 9.8-9.11
    Use-defined Types, fields, constructors, getters and setters,
    overriding the Object class' toString method (Box.java)
    Using the Box class (code)
    Reading box data from a file and storing in an array (boxes.txt) (BoxApp)
  • Mon, Nov 8: ¶ 9.7,9.14
    Static fields and methods, final fields, this keyword (Rocket.java)
    Using the Rocket class (code)
  • Wed, Nov 10: class cancelled
  • Fri, Nov 12: ¶ 9.13,11.10
    Scope of variables, overriding equals (Point3D) (3DPoint App)
  • Wed, Nov 17: Exam 3 Review
    (Student.java)(code)
  • Fri, Nov 19: Exam 3 Review (students.txt)(code) (Circle.java)(code)
  • Mon, Nov 22: Exam 3
  • Mon, Nov 29: Exam 3 Solutions (Exam 3) (Customer.java) (FindCustomer.java)
  • Wed, Dec 1 Questions for Final Exam (code) (output.txt)
Labs
Exams