Rain water catchment system: prototype routing board after a year of weathering
home
java main index > java @ ccac west unified series schedule

Three-course java progrsesion at CCAC West Hills

The community college of allegheny county offers a three-course progression of java programming courses:

  1. CIT-111: Introduction to programming with Java
  2. CIT-130: Object-oriented programming 1
  3. CIT-244: Object-oriented programming 2

Instructor Eric Darsow's implementation of this course sequence is offered at CCAC's West Hills Center in the Spring of 2019.

CIT-111: Introduction to Programming

The following table maps course session dates, lesson topics, LIANG9 references, and content links for all three Java courses in the series.

g
Course SP19 Est. Wk. Sess. Session description Resources Language objectives Out-of-class work
CIT-111 MON
28-JAN-19
1 1 Compiling existing source code into Java programs and tinkering with their guts; Exposure to code editing tools in NetBeans; internalizing the Java system's components and their flow

First exposure to looping mechanisms in Java

CIT-111 WED
30-JAN-19
2 cold Too cold for school!
CIT-111 MON
4-FEB-19
2 1 Digestion of the Java source code lifecycle: .java files --> compiler --> bytecode --> JVM (interpreter).
Creatign blocks with { and }

Java's basic grammar: Blocks, Types, variables, operators, and method calls

  • Exercise 1: Tweaking a pre-written Java console-only program
  • Exercise 2:Tweaking a pre-written Java program that includes a Graphical User Interface (GUI)
  • Exercise 3: Dissecting Java code by extracting blocks
  • Exercise 4: Building your own Java blocks from actual blocks
  • TR.111.1.L.1: Segement Java code into blocks, statements, and comments
  • TR.111.1.L.2: Classify Java code into categories:
    A) block structure formation
    B) keywords
    C) identifiers
    D) operators
    E) Method calls
  • CCAC.111.LT.1: Computer systems and environments including computer org., langs, and object programming
  • TR.111.1.E.1: Interpret the use of block-delimiting characters to create structural relationships inside a computer program
  • TR.111.1.E.2: Encode a nested-block structure in a linear sequence of computer instructions
  • TR.111.1.E.3: Create a rough draft of a code organization schema inside Netbeans for storing Java files related to this course
  • TR.111.1.P.0: Classify job postings related to Java programming: level, application type, etc.
  • TR.111.1.P.1: Diagram the relationship between the Java Virtual Machine (JVM), the NetBeans Integrated Development Environment(IDE), and a program's source and class file set
  • CCAC.111.LT.2: Executing java programs using and IDE
CIT-111 WED
6-FEB-19
2 Creating projects, packages, and source files in NetBeans
Copying pre-written code and tweaking text output and variable types
CIT-111 MON
11-FEB-19
3 1 - Right type or wrong type? Exercise
- git
- Introduction to branching with if()
- Introduction to flow charting
- Creating Might We Be Friends? Flow chart

Branching fundamentals: block selection with if()

  • Exercise 1: Sharing code with git
  • Exercise 2: Reviewing chapter 2 with the operator challenge
  • Exercise 3: Flow charting essentials - Creating your might-we-be-friends on paper
  • Exercise 4: Implementing Might We Be Friends? in Java
  • TR.111.3.L.1: Branch execution flow of a simple program using if() controlled blocks
  • TR.111.3.L.2: Implement several layers of decision logic using if-else controlled blocks
  • TR.111.3.E.1: Create a graphical flow-chart of decision logic by designating unique shapes for: a) Flow beginnigns and endings, b) general program events, and c) branching points (a.k.a. decision points or choices)
  • TR.111.3.E.2: Given a peer's program and specified program behavior, check Java code for correctly implemented logic and write detailed documetnation of any errors encountered
  • TR.111.1.P.1: Clone a git repository from a remote system into a sensible location on a local system.
  • TR.111.1.P.2: Create a local git repository, add files to the working directory, stage files for commit, commit files
  • TR.111.1.P.2: Initialize an online repository with a readme.md
CIT-111 WED
13-FEB-19
2 - Implementing Might We Be Friends? flow chart - Logic testing: verifying flow chart logic of peer programs
CIT-111 MON
18-FEB-19
4 1 Paper compiling practice & finish our Might We Be Friends? exercise

if() statements continued

  • Compute the value of primitive type variables in simple programs by hand and check those answers using a compiler
  • Use a Scanner object to gather input from a user and use those values to control if-statement selections
  • Attempt at least one exercise and one mini project from each of the two LIANG9 chapters assigned this week: Chapters 2 and 3
CIT-111 WED
20-FEB-19
2 Finish up Might We Be Friends? and then start in on Module 4
CIT-111MON
25-FEB-19
5 1 Creating our RiderHeight class

Implementing conditional logic: Roller coaster rider heights

  • java.core.if.3: Create variable requirements and flow charts to implement a given problem constraint
CIT-111 WED
27-FEB-19
2
CIT-111 MON
4-MAR-19
6 1 Finish password checker program & start looping

Looping fundamentals: the while() and for() blocks

  • Java.Looping.1: Use while() structures to implement looping behavior based on simple boolean condition comparison
CIT-111 WED
6-MAR-19
2
CIT-111 MON
11-MAR-19
7 1 Looping review exercise; start in on mini-project

Looping, continued

  • 7.L.1:
  • 7.L.2:
CIT-111 WED
13-MAR-19
2 Continue work on either 1) The quality control checker or 2) the math quiz program
CIT-111 MON
18-MAR-19
8 1 First hour: Finish looping project
Second hour: Introduction to methods

Methods Essentials: Empty calls and paramaterized calls

  • 8.L.1:
  • 8.L.2:
CIT-111 WED
20-MAR-19
2 Method module 1 mini project: Mystery doors
CIT-111 MON
25-MAR-19
9 1

Fancy Methods: Calling and writing methods with return types

Scope: Calling and writing methods with return types

CIT-111 WED
27-MAR-19
2 Method with return type / scope project worktime
CIT-111 MON
1-APR-19
10 1 Fundamentals project design

Fundamentals project

Design and implement a novel project in Java, from scratch or building upon other students' past work

Choice 1: Kennywood Ride Tracker

Choice 2: Design your own project

  • JAVA.OBJECTS.FUND.1
  • 10.L.2:
CIT-111 WED
3-APR-19
2 Fundamentals project implementation
CIT-111 MON
8-APR-19
11 1 Share fundamentals project at the beginning of class; Begin object modeling with the Donuts and proceed to Vehicles as time allows.

Discovery of the Java Object: Creating our first blueprint classes Donut.java and Vehicle.java

  • 11.L.1:
  • 11.L.2:
CIT-111 WED
10-APR-19
2 Continue Object modeling fundamentals
CIT-111 MON
15-APR-19
- -
CIT-111 WED
17-APR-19
-
CIT-111 MON
22-APR-19
12 1 Introduction to arrays and continuing objects

Arrays and for() looping

  • 12.L.1:
  • 12.L.2:
CIT-111 WED
24-APR-19
2 Continued exploration of objects and arrays
CIT-111 MON
29-APR-19
13 1 Strong start to object projects

Culminating project design & implementation

  • 13.L.1:
  • 13.L.2:
CIT-111 WED
1-MAY-19
2 Continued work on object projects; prep for final sharing
CIT-111 WED
8-MAY-19
14 1 * Bring fully-baked
projects to share.
* Same time and place
as normal Wednesday class

Sharing our culminating projects

  • 14.L.1:

CIT-130: Object-oriented design in Java

The following table maps course session dates, lesson topics, LIANG9 references, and content links for all three Java courses in the series.

Course SP19 Est. Wk. Sess. Session description Resources Learning objectives Out-of-class work
CIT-130 MON
28-JAN-19
1 1

Fiddling with Strings and Arrays: Review of Objects, types, classes, & methods

  • CCAC.130.LO.3: Apply Java language elements to use string(sic) processing techniques in a program
  • CCAC.130.LO.4: Apply Java language elements to create programs with single dimension arrays of primitives and objects. APply Java language elements to use string(sic) processing techniques in a program
  • 1.E.1: Design an algorithm for processing password candidates and strength auditing
  • 1.P.1: Initiating an empty git repo on a remote, cloning, pushing, and pulling
CIT-130 WED
30-JAN-19
2 cold Too cold for school!
CIT-130 MON
4-FEB-19
2 1

Plain old arrays to ArrayLists: Introduction to the Collection classes

  • Exercise 1: Continue work on the Week 1 Passwords module

  • Exercise 2: Adding HSStudent and CollegeStudent subclasses
  • TODO for Monday: Work your password StrengthChecker class into sharable condition for printing first thing Monday
  • TR.130.2.L.1: Create a two-class object hierarchy and demonstrate accessing a parent's data from the child
  • TR.130.2.L.2: Demonstrate a core feature of inheritance by storing and manipulating an object reference to a child class in a variable typed to the parent
  • TR.130.2.L.3: Write a program that uses Object-type variables and type casting to manipulate objects in a sample class hierarchy
  • CCAC.130.LO.5: Apply Java language elements to create programs utilizing inheritance
  • TR.130.2.E.1: Great graphical representations of both human and Java-based inheritance hierarchies and explain the similarities and differences of each
  • TR.130.2.P.1: Install and use a NetBeans plugin to visualize an Object inheritance hierarchy
CIT-130 WED
6-FEB-19
2 First implementation of the Student class hierarchy
CIT-130 MON
11-FEB-19
3 1

Inheritance Pt.1: Create a class hierarchy (a tree) by giving a class a parent with extends

  • CCAC.130.LO.5: Apply Java language elements to create programs utilizing inheritance
CIT-130 WED
13-FEB-19
2
CIT-130 MON
18-FEB-19
4 1 Complete our inheritance project

Inheritance Pt.2: Modeling computer timelines

Create a Java-based representation of the computer history timeline hanging in the hall outside of S21133

  • CCAC.130.LO.5: Apply Java language elements to create programs utilizing inheritance
  • Study the Liang9 chapter 11 - inheritance and complete the two practice quesions and the mini-project
CIT-130 WED
20-FEB-19
2 Print and include in your folder your Student[] array class
CIT-130 MON
25-FEB-19
5 1

Create a Java-based representation of the computer history timeline hanging in the hall outside of S21133

  • TR.130.5.L.1: Create a class hierarchy diagram by hand of your chosen API classes including all relevant interfaces and super-classes
  • 5.L.2:
CIT-130 WED
27-FEB-19
2 Worktime on timeline modeling
CIT-130 MON
4-MAR-19
6 1 Begin API project

Inheritance & Collections project design; software engineering techniques

  • Java.collections.1: Convert array-based data structures into LinkedList structures
  • Java.collections.2: Implement all major methods on LinkedList class
  • Completely digest Liang Chapter 22 & attempt at least one exercise and one mini-project from the suggested list for Chapter 22
CIT-130 WED
6-MAR-19
2
CIT-130 MON
11-MAR-19
7 1

Inheritance & Collection: Map-based data structures

  • 7.L.1:
  • 7.L.2:
CIT-130 WED
13-MAR-19
2 Sharing inheritance & Collection projects
CIT-130 MON
18-MAR-19
8 1

Simulation with Collections Classes and secret agents

Tie together our developing knowledge of the collections classes with new skills in algorithm development by creating a simulation machine which

  • SIM.1: Use a random number generator and methods to create many instances of a class to simulate a real-world situation.
CIT-130 WED
20-MAR-19
2 Building min/max/average algorithms step-by-step
CIT-130 MON
25-MAR-19
9 1
  • 9.L.1:
  • 9.L.2:
  • \
  • CCAC.130.LO.2: Apply Java language elements to create Swing GUI components with event handling
CIT-130 WED
27-MAR-19
2 Last work day on Agent simulations
CIT-130 MON
1-APR-19
10 1 Share Agent-mission simulators
Begin design patterns exploration
.

Design patterns: Model-View-controller structures

  • 10.L.1:
  • 10.L.2:
  • CCAC.130.LO.2: Apply Java language elements to create Swing GUI components with event handling
CIT-130 WED
3-APR-19
2 Designing your own View of the MVC
CIT-130 MON
8-APR-19
11 1

GUI & Inheritance project workshop

  • 11.L.1:
  • 11.L.2:
CIT-130 WED
10-APR-19
2 Share GUI & inheritance projects
CIT-130 MON
15-APR-19
- -
CIT-130 WED
17-APR-19
-
CIT-130 MON
22-APR-19
12 1

GUI & Inheritance project workshop

  • 12.L.1:
  • 12.L.2:
CIT-130 WED
24-APR-19
2
CIT-130 MON
29-APR-19
13 1

Exceptional term projects: design and workshop time

  • 13.L.1:
  • 13.L.2:
CIT-130 WED
1-MAY-19
2
CIT-130 WED
8-MAY-19
14 1 * Bring fully-baked
projects to share.
* Same time and place
as normal Wednesday class

Sharing term projects and final checkout

  • 14.L.1:

CIT-244: Object-oriented design in Java

The following table maps course session dates, lesson topics, LIANG9 references, and content links for all three Java courses in the series.

Course SP19 Est. Wk. Sess. Session description Module links Language objectives Out-of-class work
CIT-244 MON
28-JAN-19
1 1

String manipulation and array review

  • CCAC.244.LO.1: Apply Java language elements to use string(sic) processing techniques in a program
  • CCAC.244.LO.2: Apply Java language elements to create programs with single dimension arrays of primitives and objects. APply Java language elements to use string(sic) processing techniques in a program
CIT-244 WED
30-JAN-19
2 cold Too cold for school!
CIT-244 MON
4-FEB-19
2 1

Inheritance revisited: Teasing apart use cases for plain inheritance, abstract methods, and interfaces

  • 2.L.1:
  • 2.L.2:
  • 2.L.1:
  • 2.L.2:
CIT-244 WED
6-FEB-19
2
CIT-244 MON
11-FEB-19
3 1

Exploring constructors and interfaces with a Comparable Computer object

  • Exercise 1:Group code-along of an Integer array which has a natural ordering and can be sorted by Arrays.sort(Object[] o)
  • Exercise 2:Creating the Computer class and a four-argument constructor. Populating an array with Computers.
  • Execise 3: Implement Comparable inside Computer and test with Arrays.sort().
  • Exercise 4: Abstract classes - Add a child
  • 3.L.1:
  • 3.L.2:
CIT-244 WED
13-FEB-19
2
CIT-244 MON
18-FEB-19
4 1

Inheritance Practice: Modeling computer timelines and file I/O

Study this document used by the CIT-115 students to create the computer history timeline in the hall. Your job is to model the timeline components in Java such that the data is stored in a File and can be retrieved and re-created as the timeline evolves.

  • Write to and from files
  • Create a data encoding scheme for the data in files that works with your program's inheritance scheme
CIT-244 WED
20-FEB-19
2
CIT-244 MON
25-FEB-19
5 1 Creating class diagrams for Timeline project

Data store API project design and workshop time

Connecting Java applications and the file system: Introducing file I/O

  1. Install the EasyUML diagram plugin in NetBeans
  2. Create a new project of type UML
  3. Create an empty class in some other project and then click and drag it into your EasyUML project
  4. With one class inside the UML project, right click that class and select "easyUML generate class diagram" to create a new diagram
  5. Tweak and refine your UML diagram using the options in the pallette for tools
  6. You can generate the Java from your diagram by selecting any class diagram over in your projects tree and selecting "easyUML generate code". You'll specify the project in which you'd like easyUML to dump the classes it generates. (It will place them all in the default package for that project. You'll want to them move those class files into their appropriate named package)
  • Write to and from files
  • Create a data encoding scheme for the data in files that works with your program's inheritance scheme
CIT-244 WED
27-FEB-19
2 Implement file I/O with text-based UI for timeline project
CIT-244 MON
4-MAR-19
6 1

DUE AT BEG OF CLASS: Text-based UI for timeline project with reading and writing from files for persistence

Refactoring to align to the MVC framework

Implementing the MVC framework

  • 6.L.1:
  • 6.L.2:
CIT-244 WED
6-MAR-19
2 Building new functionality with minimal changes: All Hail the MVC design framework
CIT-244 MON
11-MAR-19
7 1 Migration to GUIs from our text-based interface

Migration to GUIs

  • 7.L.1:
  • 7.L.2:
CIT-244 WED
13-MAR-19
2 Continued GUI migration and event handling
CIT-244 MON
18-MAR-19
8 1 Inner class worksheet and review of Listener methods

Peer-testing the GUI and creating feature requests

Prepare for CIT-115 students testing your program on Wednesday, 20 March

  • 8.L.1:
  • 8.L.2:
CIT-244 WED
20-MAR-19
2 Continued GUI building for Timeline project
CIT-244 MON
25-MAR-19
9 1

Revised: DUE AT BEG OF CLASS: Working GUI that takes in timeline data, writes to a file, and reads file data back in, creating an organized timeline

During class we will prep the sharing of the programs with CIT-115, so please be ready to package and share.

Preping for sharing

Please complete the following steps for Monday, 1 APR at 8:00 am (when CIT-115 meets)

  1. Complete your GUI to a sharable state (no obvious bugs or silly stuff dangling all over the place)
  2. Push your code to your github repo
  3. Make an entry in our upload log so we can find your code
  4. Create a markdown file called readme.md in the same directory as your code and include the following content. You can use this great markdown guide to help you write the markdown.
    • Headers
    • 1 Image
    • 1 Link
    • 1 Code example with explanation
    • 1 review question for the 115 student to write a response to
    • Step-by-step on how to run your program from your git hub (include how to clone your repo, and how to open your project, and which class to run)
  • 9.L.1:
  • 9.L.2:
CIT-244 WED
27-MAR-19
2 Review client feedback on GUI applications in CIT-115
CIT-244 MON
1-APR-19
10 1 Review feedback from CIT-115 students
Group coding of Merge sort

Algorithm development: Sorting!

Small-group exploration of sorting algorithms

  1. Bubble sort
  2. Merge sort
  3. Quick sort
  4. Heap sort (binary tree)
  5. Bucket sort
  • 10.L.1:
  • 10.L.2:
CIT-244 WED
3-APR-19
2 Introduce sorting comparison project and divide into groups
CIT-244 MON
8-APR-19
11 1 Sorting metrics continued

Sorting

Project wrap-up TODO

  1. Write javadoc comments for each method in both of your classes using the javadoc doc as your guide
  2. Push your code up to your github repository. Create a small readme.md for documenting what the code does
  3. Make an entry in our upload log so we can find your code
  4. Clone a peer's repo and test their sorting algorithms using your test class and its various test methods. Write a note card evaluating the correctness and efficiency and beauty of your peers' code. Show your peer and your instructor your note card.
  • 11.L.1:
  • 11.L.2:
CIT-244 WED
10-APR-19
2
CIT-244 MON
15-APR-19
- -
CIT-244 WED
17-APR-19
-
CIT-244 MON
22-APR-19
12 1

Sort algorithm testing & git

  1. Finalize sorting algorithm class (see project link below)
  2. Create a git branch for just your sorting alogorithms
  3. Push your finalized work to remote repo
  4. Clone peer's repo to your system
  5. Compare test results using your own and others client methods
  6. Refactor peer's code and push to your own remote
  7. Create a pull request on the original author's repo and merge changes in a new branch
  8. Merge in objects from a pull request to one's own rep
CIT-244 WED
24-APR-19
2
CIT-244 MON
29-APR-19
13 1

Tree-based data structure project design and implementation

  • 13.L.1:
  • 13.L.2:
CIT-244 WED
1-MAY-19
2
CIT-244 WED
8-MAY-19
14 1 * Bring fully-baked
projects to share.
* Same time and place
as normal Wednesday class

Sharing final tree projects

  • 14.L.1: