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 09

Slides

Introduction to Course, Python Review

Python review lab

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_2022 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 Java textbook - a first textbook for students, so it will seem more basic but it covers more topics, more in-depth

Week 2

Sep 12

Slides

Terminology and Python review

Complete Part 2 of Python review lab and the Towards a Power User lab before class on Wednesday.

Sep 14

Slides

Python review: Design discussion

Toward a Power User Review

Development Set Up

Sep 16

Slides

Introduction to Java

Introduction to Version Control and GitHub

Complete Git Lab

Week 3

Sep 19

Slides
Examples

Java fundamentals: printing, statically typed variables, arithmetic operators, relational operators

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

Assignment 0

Sep 21

Slides
Examples

Common Java classes: String; getting user input: Scanner

Using the Java API

Read textbook, "Java Data Types", up to but not including List.

Java Tutorials

Assignment 1

Sep 23

Slides
Examples

Control structures, arrays, command-line arguments

Read textbook up through Loops and Iteration

Assignment 2

Week 4

Sep 26

Slides
Examples
Javadocs for Chicken class

Creating our own classes

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

Assignment 3

Sep 28

Slides
Examples
Javadocs for Chicken class

Creating classes, cont'd; Overloading; Inheritance, Overriding

Standard Streams

Continue in Textbook "Defining Classes in Java"

Sep 30

Slides
Examples

Static Methods and Fields

Math

Read textbook sections on static member variables and methods

Week 5

Oct 03

Slides
Examples

Testing

Cloning

Passing parameters

Assignment 3 (still)

Oct 05

Slides

Java Garbage Collection

Packages

Inheritance

Oct 07

Exam 1
Exam 1 Prep

Week 6

Oct 10

Slides
Examples

Inheritance continued

Polymorphism, Dynamic Dispatch

Jar Files, Classpath

Abstract Classes, Interfaces

Generics

Collections

Continue in Textbook "Defining Classes in Java"

Assignment 4

Oct 12

Slides
Examples

Oct 14

Reading Days

Week 7

Oct 17

Slides
Examples

Collections

Finish "Java Data Types" section in textbook

Assignment 4 (still)

Oct 19

Slides
Examples

Collections

Eclipse

Exceptions

Set Up Eclipse

Oct 21

Slides
Examples

Exceptions Assignment 5

Week 8

Oct 24

Slides

Examples

Files

Streams

Assignment 5 (continued)

Oct 26

Slides

Comparing Java, Python

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 28

Slides

Introduction to 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

Week 9

Oct 31

Slides

In-Class Lab: Catch The Mutants

Examples

JUnit
Examples

Testing Project

Nov 02

Slides
Examples

Collaboration

Coverage, White-box Testing

Eclipse Plug-in (EclEmma)

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

Nov 04

Slides

Coverage: benefits and limitations

Design in the Small

Week 10

Nov 07

Slides

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

Testing Project (cont'd)

Nov 09

Slides

Nov 11

Exam 2
Exam 2 Prep

Week 11

Nov 14

Slides

Analysis and Design (Analysis and Design)

GUIs

Handling events

Swing References:

Final Project

Preparation Analysis: Due Friday, November 18 before class

Nov 16

Slides

Nov 18

Slides

Week  

Nov 21

Thanksgiving Break

Nov 23

Nov 25

Week 12

Nov 28

Slides

Singleton design pattern

Prototypes, Review

Decorator Design pattern

Project Design, Management

Final Project

Preliminary implementation and demo due Friday, Dec 2

Nov 30

Slides

Dec 02

Slides

Week 13

Dec 05

Slides

Designing APIs, Design Principles

Project Design, Management

Final Project

Intermediate implementation and demo due Friday, Dec 9

Dec 07

Slides

Dec 09

Slides

Week  

Dec 12

Final Exam Period
Final Implementation and Post Analysis

Dec 14

Dec 16