Skip to main content.

Schedule

Lecture slides will be posted after class.

Most dates are tentative. The schedule will be updated as the semester progresses.

WEEK DAY Slides & Examples Topic & Reading Assignments

Week 1

Sep 05

Slides

Introduction to Course

Register for the interactive textbook by going to the textbook site and then register, creating a username/password for the course. Use the code wlu_csci209_2025 for the course name and make sure you register with some info that will make it easy for me to identify you. (Like, don't make your name "Benji T. Gorilla" or something, unless that is your name.) While the book and registration is free, please consider donating $10 to help with their hosting and development costs.

Another, optional Java textbook: CS Awesome - a first textbook for students, so it will seem more basic but it covers more topics, more in-depth.

Towards a Power User - due before class on Monday

Week 2

Sep 08

Slides

Toward a Power User Review

Terminology and Python review

Terminology and Python review

Sep 10

Slides

Terminology and Python review
Design discussion

Complete Design discussion

Set Up Development Environment: Git

Sep 12

Slides

Introduction to Version Control and GitHub

Complete Git Lab

Set Up Development Environment: Java

Week 3

Sep 15

Slides
Examples

Introduction to Java

Java fundamentals: printing

Read textbook up through 2.2: Let's Look at a Java Program

(cont'd) Complete Git Lab

Set Up Development Environment: Java

Sep 17

 

Java fundamentals; statically typed variables, arithmetic operators, relational operators

Read textbook, 3.1-3.3

Java Tutorials

 

Sep 19

 

Common Java classes: String; getting user input: Scanner

Using the Java API

Control structures

Read textbook, 3.3, Chapter 4.

Week 4

Sep 22

 

Control structures, arrays, command-line arguments

Read Chapter 3.4 (although we aren't talking about lists yet), Chapter 5

Sep 24

 

Standard Streams

Creating our own classes

Testing classes

Read textbook: "Defining Classes in Java" (6.1-6.3)

Sep 26

 

Overloading; Inheritance, Overriding

Continue in Textbook "Defining Classes in Java" (6.4)

Week 5

Sep 29

 

Static Methods and Fields

Formatting

Math

Read textbook sections on static member variables and methods

Oct 01

 

Cloning

Passing parameters

Oct 03

Exam 1
Exam 1 Prep

Week 6

Oct 06

 

Packages

Inheritance, Polymorphism, Dynamic Dispatch

Continue in textbook "Defining Classes in Java" up to but not including "Abstract Classes and Methods"

Oct 08

 

Jar Files, Classpath

Abstract Classes, Interfaces

Generics

Collections

Continue in textbook "Defining Classes in Java"

Oct 10

Reading Days

Week 7

Oct 13

 

Collections

Finish "Java Data Types" chapter in textbook

Oct 15

 

Collections

Eclipse

Exceptions

Oct 17

  Exceptions

Week 8

Oct 20

 

Files

Streams

Oct 22

 

Java Garbage Collection

Compiler Optimizations

2020 ACM Breakthrough Award Winner: Michael Franz, for the development of just-in-time compilation techniques that enable fast and feature-rich web services on the internet.

Oct 24

 

Comparing Java, Python

Introduction to Software Development

Week 9

Oct 27

 

Software Development

Testing

Oct 29

 

Unit Testing

JUnit
Examples

Oct 31

 

Testing

Collaboration

Coverage, White-box Testing

Week 10

Nov 03

 

Coverage: benefits and limitations

Eclipse Plug-in (EclEmma)

Why do developers hate code coverage? And why they should not hate it!

Nov 05

 

Design in the Small

Open-Closed Principle

Code Smells, Refactoring for Readability, Maintainability, and Extensibility

Readings and Resources:

Liskov Substitution Principle

Readings:

Design Patterns (Factories, Composite, Strategy, Observer, MVC)

Head First Design Patterns

Dependency Inversion Principle

Nov 07

Exam 2
Exam 2 Prep

Week 11

Nov 10

 

Analysis and Design (Analysis and Design)

GUIs

Handling events

Swing References:

Nov 12

 

Nov 14

 

Week 12

Nov 17

 

Singleton design pattern

Prototypes, Review

Decorator Design pattern

Project Design, Management

Nov 19

 

Nov 21

 

Week  

Nov 24

Thanksgiving Break

Nov 26

Nov 28

Week 13

Dec 01

 

Designing APIs, Design Principles

Project Design, Management

Dec 03

 

Dec 05

 

Week  

Dec 08

Final Exam Period
Final Implementation and Post Analysis

Dec 10

Dec 12