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 Lectures & Examples Topic & Reading Assignments

Week 1

Sep 08

Slides

Introduction to Course, Python Review

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_2023 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 - a first textbook for students, so it will seem more basic but it covers more topics, more in-depth. Click "Enroll in a course" and enter the course name csawesome. You can switch between the courses.

Towards a Power User - due before class on Monday

Week 2

Sep 11

Slides

Toward a Power User Review

Terminology and Python review

Python review lab

Sep 13

Slides

Python review; Design discussion

Complete Design discussion

Set Up Development Environment: Git

Sep 15

Slides

Introduction to Version Control and GitHub

Complete Git Lab

Set Up Development Environment: Java

Week 3

Sep 18

Slides
Examples

Introduction to Java

Java fundamentals: printing

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

Compile and Execute Java program

Sep 20

Slides
Examples

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

Read textbook, 1.5.1 (but not 1.5.1.1 or later).

Java Tutorials

Assignment 0

Sep 22

Slides
Examples

Common Java classes: String; getting user input: Scanner

Using the Java API

Control structures

Read textbook up through 1.5.2.

Assignment 1

Week 4

Sep 25

Slides
Examples

Control structures, arrays, command-line arguments

Read 1.5.3 (although we aren't talking about lists yet), 1.5.4, 1.6, 1.7

Assignment 2

Sep 27

Slides
Examples
Javadocs for Chicken class

Standard Streams

Creating our own classes

Testing classes

Read textbook: "Defining Classes in Java" up to but not including Inheritance

Assignment 3 (parts 1 and 2 recommended)

Sep 29

Slides
Examples
Javadocs for Chicken class

Overloading; Inheritance, Overriding

Continue in Textbook "Defining Classes in Java"

Week 5

Oct 02

Slides
Examples

Static Methods and Fields

Formatting

Math

Read textbook sections on static member variables and methods

Assignment 3 (complete)

Oct 04

Slides
Examples

Cloning

Passing parameters

Oct 06

Exam 1
Exam 1 Prep

Week 6

Oct 09

Slides
Examples

Packages

Inheritance, Polymorphism, Dynamic Dispatch

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

Assignment 4

Oct 11

Slides
Examples

Jar Files, Classpath

Abstract Classes, Interfaces

Generics

Collections

Continue in textbook "Defining Classes in Java"

Oct 13

Reading Days

Week 7

Oct 16

Slides
Examples

Collections

Finish "Java Data Types" section in textbook

Assignment 4 (continued)

Oct 18

Slides
Examples

Collections

Eclipse

Exceptions

Set Up Eclipse

Oct 20

Slides
Examples

Exceptions Assignment 5

Week 8

Oct 23

Slides

Examples

Files

Streams

Assignment 5 (continued)

Oct 25

Slides

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 27

Slides

Comparing Java, Python

Introduction to Software Development

Week 9

Oct 30

Slides

Software Development

Testing

Read this overview of testing, unit testing, and JUnit and complete the reading quiz in Canvas. Clone the repository for the In-Class Lab: Catch The Mutants

Nov 01

In-Class Lab: Catch The Mutants

Examples

Slides

Unit Testing

JUnit
Examples

Testing Project

Nov 03

Slides
Examples

Testing

Collaboration

Coverage, White-box Testing

Week 10

Nov 06

Slides

Coverage: benefits and limitations

Eclipse Plug-in (EclEmma)

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

More Testing Project

Nov 08

Slides

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 10

Exam 2
Exam 2 Prep

Week 11

Nov 13

Slides

Analysis and Design (Analysis and Design)

GUIs

Handling events

Swing References:

Final Project

Preparation Analysis: Due Friday, November 17 before class

Nov 15

Slides

Nov 17

Slides

Week  

Nov 20

Thanksgiving Break

Nov 22

Nov 24

Week 12

Nov 27

Slides

Singleton design pattern

Prototypes, Review

Decorator Design pattern

Project Design, Management

Final Project

Preliminary implementation and demo due Friday, Dec 1

Nov 29

Slides

Dec 01

Slides

Week 13

Dec 04

Slides

Designing APIs, Design Principles

Project Design, Management

Final Project

Intermediate implementation and demo due Friday, Dec 8

Dec 06

Slides

Dec 08

Slides

Week  

Dec 11

Final Exam Period
Final Implementation and Post Analysis

Dec 13

Dec 15