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 2020.

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.

Course SP19 Est. Wk. Sess. Session description Resources Language objectives Out-of-class work
CIT-111 MON
27-JAN-2020
1 n/a
CIT-111 WED
29-JAN-2020
2 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
CIT-111 MON
3-FEB-2020
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
5-FEB-2020
2 Creating projects, packages, and source files in NetBeans
Copying pre-written code and tweaking text output and variable types
CIT-111 MON
10-FEB-2020/td>
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
12-FEB-2020
2 - Implementing Might We Be Friends? flow chart - Logic testing: verifying flow chart logic of peer programs
CIT-111 MON
17-FEB-2020
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
19-FEB-2020
2 Finish up Might We Be Friends? and then start in on Module 4
CIT-111 MON
24-FEB-2020
5 1 Counting loop time & starting module 5

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

  • java.core.if.3: Create variable requirements and flow charts to implement a given problem constraint
CIT-111 WED
26-FEB-2020
2 Module 5 mini-projects: authentication etc.
CIT-111 MON
2-MAR-2020
6 1 Scope
  • Java.Looping.1: Use while() structures to implement looping behavior based on simple boolean condition comparison
CIT-111 WED
4-MAR-2020
2
CIT-111 MON
9-MARCH-2020
7 1 Looping review exercise

Looping, continued

  • 7.L.1:
  • 7.L.2:
CIT-111 WED
11-MARCH-2020
2 Continue work on either 1) The quality control checker or 2) the math quiz program
CIT-111 MON
16-MARCH-2020
- - Rescheduled "spring break"
CIT-111 WED
18-MARCH-2020
-
CIT-111 MON
23-MARCH-2020
8 1 Canceled due to COVID-19 prep

Connect repl.it to your github

  1. Navigate to repl.it online java compiler
  2. In a new tab, navigate to github.com and log in
  3. Switch back to repl.it and click the log in icon in the upper right with the github icon
  4. Click the link below to our COVID-19 tracker, and make an entry for yourself with your github repo and repl.it share link (you can get your repli.it link by clicking the "share" button in the top toolbar

Review Methods Essentials: Empty calls and paramaterized calls

In-class exercises

1: Create a file in repl.it called CarFob and copy in the raw version of our CarFob.java from our course repo

2: Create customized doors in this door game seed file called DoorGame.java

CIT-111 WED
25-MARCH-2020
2

MtngID: 614 961 8122
Ph:+1 646-558-8656

CIT-111 MON
30-MARCH-2020
9 1

MtngID: 614 961 8122
Ph:+1 646-558-8656

Fancy Methods: Calling and writing methods with return types

CIT-111 WED
1-APR-2020
2

MtngID: 614 961 8122
Ph:+1 646-558-8656

CIT-111 MON
6-APR-2020
10 1

MtngID: 614 961 8122
Ph:+1 646-558-8656

CIT-111 WED
8-APR-2020
2

MtngID: 614 961 8122
Ph:+1 646-558-8656

CIT-111 MON
13-APR-2020
11 1

MtngID: 614 961 8122
Ph:+1 646-558-8656

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

  • 11.L.1:
  • 11.L.2:
CIT-111 WED
15-APR-2020
2

MtngID: 614 961 8122
Ph:+1 646-558-8656

CIT-111 MON
20-APR-2020
12 1

Java Object!: Creating object blueprint classes

  • 12.L.1:
  • 12.L.2:
CIT-111 WED
22-APR-2020
2

MtngID: 614 961 8122
Ph:+1 646-558-8656

CIT-111 MON
27-APR-2020
13 1

MtngID: 614 961 8122
Ph:+1 646-558-8656

Arrays and for() looping

  • 13.L.1:
  • 13.L.2:
CIT-111 WED
29-APR-2020
2
CIT-111 MON
4-MAY-2020
14 1

NO CLASS!

CCAC "reading day"
CIT-111 WED
6-MAY-2020
2

MtngID: 614 961 8122
Ph:+1 646-558-8656

* Bring fully-baked
projects to share.
* Same time and place
as normal Wednesday class

Sharing our culminating projects

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 SP20 Est. Wk. Sess. Session description Resources Learning objectives Out-of-class work
CIT-130 MON
27-JAN-20
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
29-JAN-20
2
CIT-130 MON
3-FEB-20
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
5-FEB-2020
2 First implementation of the Student class hierarchy
CIT-130 MON
10-FEB-2020
3 1
CIT-130 WED
12-FEB-2020
2
CIT-130 MON
17-FEB-2020
4 1

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

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
19-FEB-2020
2 Print and include in your folder your Student[] array class
CIT-130 MON
24-FEB-2020
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
26-FEB-2020
2 Worktime on timeline modeling
CIT-130 MON
2-MAR-2020
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
4-MAR-2020
2
CIT-130 MON
9-MAR-2020
7 1

Inheritance & Collection: Map-based data structures

  • 7.L.1:
  • 7.L.2:
CIT-130 WED
11-MAR-2020
2 Sharing inheritance & Collection projects
CIT-130 MON
16-MAR-2020
- - No class: rescheduled "spring break"
CIT-130 WED
18-MAR-2020
-
CIT-130 MON
23-MAR-2020
8 1 Session canceled due to COVID-19 prep
CIT-130 WED
25-MAR-2020
2

MtngID: 614 961 8122
Ph:+1 646-558-8656

GUIs with Swing

Design Notes

  • The Swing chapters in Liang9 are 12 (Basics), 13 (Graphics), 16 (Events), 17(Advanced components)
  • If you have not thoroughly digested chapters 12 and 16, you'll have a hard time programming a custom GUI
  • Layout managers are described in Section 12.5
  • You can respond to mouse or key events with listeners, too. See Liang9 section 16.8 (Mouse Events) and 16.10 (Key Events)
  • Using inner classes for listeners will be the most versatile (Liang9 16.4)
  • If you want to draw custom shapes (squares, lines, ovals), see Liang9 Chapter 13: Graphics
CIT-130 MON
30-MAR-2020
9 1

MtngID: 614 961 8122
Ph:+1 646-558-8656

Session 1 (Monday): Group check-in on GUI project

Sign in on Monday with a draft program of some functionality related to your project so we can share progress, ask questions, and learn about the fine art of Swing together.

  • 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
1-APR-2020
2

MtngID: 614 961 8122
Ph:+1 646-558-8656

CIT-130 MON
6-APR-2020
10 1

MtngID: 614 961 8122
Ph:+1 646-558-8656

Design patterns: Model-View-controller structures

CIT-130 WED
8-APR-2020
2

MtngID: 614 961 8122
Ph:+1 646-558-8656

CIT-130 MON
13-APR-2020
11 1

MtngID: 614 961 8122
Ph:+1 646-558-8656

GUI & Inheritance project workshop

  • 11.L.1:
  • 11.L.2:
CIT-130 WED
15-APR-2020
2

MtngID: 614 961 8122
Ph:+1 646-558-8656

CIT-130 MON
20-APR-2020
12 1

MtngID: 614 961 8122
Ph:+1 646-558-8656

GUI & Inheritance project workshop

  • 12.L.1:
  • 12.L.2:
CIT-130 WED
22-APR-2020
2

MtngID: 614 961 8122
Ph:+1 646-558-8656

CIT-130 MON
27-APR-2020
13 1

MtngID: 614 961 8122
Ph:+1 646-558-8656

Exceptional term projects: design and workshop time

  • 13.L.1:
  • 13.L.2:
CIT-130 WED
29-APR-2020
2

Screencast of Git Workflow co-creation

CIT-130 WED
6-MAY-2020
14 1

MtngID: 614 961 8122
Ph:+1 646-558-8656

* Bring fully-baked
projects to share.

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.

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

String manipulation and array review

  1. Introduction to object-oriented design
  2. Exploring past project code from last term
  3. Digging into password strength checking
  • 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
4-SEP`
2
CIT-244 MON
9-SEP-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
11-SEP-19
2
CIT-244 MON
16-SEP-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
18-SEP-19
2
CIT-244 MON
23-SEP-19
4 1 Planning vehicle inheritance

Inheritance Practice: Modeling computer timelines and file I/O

  • 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
25-SEP-19
2
CIT-244 MON
30-SEP-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
2-OCT-19
2 Implement file I/O with text-based UI for timeline project
CIT-244 MON
7-OCT-19
6 1

Finishing car crash module

  • 6.L.1:
  • 6.L.2:
CIT-244 WED
9-OCT-19
2 Building new functionality with minimal changes: All Hail the MVC design framework
CIT-244 MON
14-OCT-19
7 1 Return to GUIs with Hashing!

Project specs

GUI Resources

  • 7.L.1:
  • 7.L.2:
CIT-244 WED
16-OCT-19
2 Continued GUI migration and event handling
CIT-244 MON
21-OCT-19
8 1 Inner class worksheet and review of Listener methods
  • 8.L.1:
  • 8.L.2:
CIT-244 WED
23-OCT-19
2
CIT-244 MON
28-OCT-19
9 1 Asymmetric key cryptography

Diffie & Hellman

  • 9.L.1:
  • 9.L.2:
CIT-244 WED
30-OCT-19
2 Hashing
CIT-244 MON
4-NOV-19
10 1 Hashing and cryptography

Cryptography continued

  • 10.L.1:
  • 10.L.2:
CIT-244 WED
6-NOV-19
2 Continued work on Hashing project
CIT-244 MON
11-NOV-19
11 1 Sorting metrics continued
  • 11.L.1:
  • 11.L.2:
CIT-244 WED
13-NOV-19
2
CIT-244 MON
18-NOV-19
12 1

Encryption Continued

TODOs

  1. Thoughtfully transfer the code in the JCA guide's Diffie-Hellman Key Exchange between two parties into a class of your creation, using "character names" of your choosing (that are not Alice and Bob). Do not copy and paste.
  2. Adapt your code to be object-oriented with sensible methods to encapsulate core functionality.
CIT-244 WED
20-NOV-19
2 Share encryption projects
CIT-244 MON
25-NOV-19
- -
CIT-244 WED
27-NOV-19
-
CIT-244 MON
2-DEC-19
13 1

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.
CIT-244 WED
4-DEC-19
2 Continue sorting final projects
CIT-244 MON
9-DEC-19
1 1

Final sorting project prep

CIT-244 WED
11-DEC-19
14 2 * Bring fully-baked
projects to share.
* Same time and place
as normal Wednesday class

Sharing final sorting projects

  • 14.L.1: