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 06

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_2024 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 09

Slides

Toward a Power User Review

Terminology and Python review

Python review lab

Sep 11

Slides

Python review; Design discussion

Complete Design discussion

Set Up Development Environment: Git

Sep 13

Slides

Introduction to Version Control and GitHub

Complete Git Lab

Set Up Development Environment: Java

Week 3

Sep 16

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 18

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 20

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 23

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 1, cont'd

Sep 25

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 2 (parts 1 and 2 recommended)

Sep 27

Slides

Examples

Javadocs for Chicken class

Overloading; Inheritance, Overriding

Continue in Textbook "Defining Classes in Java"

Week 5

Sep 30

Slides

Examples

Static Methods and Fields

Formatting

Math

Read textbook sections on static member variables and methods

Assignment 2 (complete)

Oct 02

Slides

Examples

Cloning

Passing parameters

Oct 04

Exam 1
Exam 1 Prep

Week 6

Oct 07

Slides
Examples

Packages

Inheritance, Polymorphism, Dynamic Dispatch

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

Assignment 3

Oct 09

Slides
Examples

Jar Files, Classpath

Abstract Classes, Interfaces

Generics

Collections

Continue in textbook "Defining Classes in Java"

Oct 11

Reading Days

Week 7

Oct 14

Slides
Examples

Collections

Finish "Java Data Types" section in textbook

Assignment 3 (complete)

Oct 16

Slides
Examples

Collections

Eclipse

Exceptions

Set Up Eclipse

Oct 18

Slides
Examples

Exceptions Assignment 4

Week 8

Oct 21

Slides

Examples

Files

Streams

Assignment 4 (continued)

Oct 23

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 25

Slides

Comparing Java, Python

Introduction to Software Development

Week 9

Oct 28

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

Oct 30

In-Class Lab: Catch The Mutants

Examples

Slides

Unit Testing

JUnit
Examples

Testing Project

Nov 01

Slides
Examples

Testing

Collaboration

Coverage, White-box Testing

Week 10

Nov 04

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 06

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 08

Exam 2
Exam 2 Prep

Week 11

Nov 11

Slides

Analysis and Design (Analysis and Design)

GUIs

Handling events

Swing References:

Final Project

Preparation Analysis: Due Friday, November 15 before class

Nov 13

Slides

Nov 15

Slides

Week 12

Nov 18

Slides

Singleton design pattern

Prototypes, Review

Decorator Design pattern

Project Design, Management

Final Project

Preliminary implementation and demo due Friday, Nov 22

Nov 20

Slides

Nov 22

Slides

Week  

Nov 25

Thanksgiving Break

Nov 27

Nov 29

Week 13

Dec 02

Slides

Designing APIs, Design Principles

Project Design, Management

Final Project

Intermediate implementation and demo due Friday, Dec 6

Dec 04

Slides

Dec 06

 

Week  

Dec 09

Final Exam Period
Final Implementation and Post Analysis

Dec 11

Dec 13