CSCI-101 Programming I
Spring 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
Jan 8
Jan 8: Syllabus Syllabus
Jan 10: Notes on the board Variable definitions, assignment statements, primitive types
Jan 12: Notes on the board assignment statements, + - / * operators
✧Work hard; Amazing opportunities exist for those that do.
Jan 15
Jan 15: MLK Jr. Day - No class No class
Jan 17: Notes on the board Compile and Run process, Printing to screen, Reading from kb using Scanner
Jan 19: code Scanners
✧ Know what you don't know - and fill in those gaps
Jan 22
Jan 22: code Comments, next() vs nextLine(), conditionals, boolean operators, modulus
Jan 24: code, drills How to use Scanner.nextLine(), complex boolean expressions
Jan 26: code comparing chars, comparing Strings, if-else statements
✧ Sign up for a tutor if you need one. They're free!
Jan 29
Jan 29: code, code if-else if-else blocks, switch statements, comparing strings
Jan 31: code while-loops, counting with loops, reading char from kb, increment and decrement operators
Feb 2: code, Quiz 2
✧ You are a reflection of the company you keep.
Feb 5
star Feb 5: Exam 1 Answer Key
Feb 7: Class cancelled - code solutions to Exam 1
Feb 9: Class cancelled - finish lab5
✧ Start a programming project with your friends.
Feb 12
Feb 12: code do-while loop, for-loop, intro to arrays
Feb 14: code arrays, Math class, random(), for-loops, methods
Feb 16: code while-loops, arrays, for-loops, methods
✧ Do open.kattis.com practice problems.
Feb 19
Feb 19: code, scores.txt, scores.bkup file i/o, min of array
Feb 21: Web Scripting I index.html, index.css, index.js HTML, CSS, JavaScript
Feb 23: code Initialize array with random values, get closest to mean
✧ Find some friends to work on a code project outside of class.
Mar 4
Mar 4: code methods
Mar 6: code, rand.txt Arrays, methods
Mar 8: code, 2D arrays countGrades, 2D arrays
✧ If you're not doing well in class, pause your gaming until your grades improve.
Mar 11
star Mar 11: Exam 2 Answer Key
Mar 13: code, matrix.txt 2D arrays, useDelimiter
Mar 15: code, matrix3.txt, Player 2D array review, Entity classes
✧ Each morning, set goals for the day.
Mar 18
Mar 18: Web Scripting II index.html, index.css, index.js HTML, CSS, JavaScript
Mar 20: Code, Player.java Entity classes, fields, constructors, getters, setters
Mar 22: code, Player.java Overriding equals
✧ Each Sunday evening, set goals for the week.
Mar 25
Mar 25: code, Player.java Entity classes, overriding equals and toString
Mar 27: code,Box.java, boxes.txt Overriding equals and toString, arrays of entity classes, File IO with entity classes
Mar 29: Easter Break
✧ Don't skip class.
Apr 1
Lab 12: Maze Game Base
Apr 1: Easter Break
Apr 3: PlayerList,code ArrayList data structure, discussed array lists, queues and stacks
Apr 5: Student, InvalidDataException,driver Exception, RuntimeException, try-catch statements, throws clause, throw statement
✧ Learn and experiment with JavaScript or Python in your free time.
Apr 8
Lab 13: Exam 3Travel Course
Apr 8: Foo.java, InvalidDataException.java, AnotherException.java, driver Exceptions, super(), throwing multiple types of exceptions, finally-block
star Apr 10: Exam 3 Answer Key, MenuItem.java
Apr 12: Bar.java, code static, final
✧ You are special.
Apr 15
Apr 15: code, Sort.java Bubble sort
Apr 17: SuperClass.java, SubClass.java, code Super class, sub class, extends, overloading methods
Apr 19: Lecture cancelled
✧ Don't give up. Demonstrate to me that you know the material on the final exam.
Apr 22
No lab this week - last week of classes
Apr 22: Final Exam Review Final Exam Review
Apr 25: Final Exam Review Final Exam Review
✧ Read above.