Readings and other resources in module order

Module: Introduction

Preparing for ICS 314

What to know in advance of ICS 314


How grades for this class will be determined

How to watch screencasts the smart way

There is an art to watching screencasts effectively. Here are some heuristics.

Introduction to ICS 314

Goals, the three prime directives, texts, prerequisites, what to do next

Screencast 20 min

Programming achievements: how to level up as a developer

“How does a good developer become a great developer? Forget greatness for a moment: How does a decent developer become a good developer?”

The programmer dress code

“I really want to know what it is about programming, or computers in general, that makes people want to grow a beard, have long hair, and dress like a slob.”

The pursuit of excellence in programming

“Mastering a complex discipline such as programming requires a great amount of learning over the course of several years, perhaps even decades.”

Module: Professional Persona

Professional Persona

Concepts of a professional persona: email, portfolio site, projects, technical writing, networking

screencast 10 min

Building a professional portfolio in WordPress

Guided tour of configuring a WordPress site for use as a professional portfolio

Screencast 18 min

A skeletal professional portfolio

The example portfolio site created in the screencast

Professional portfolio style guide

Guidelines for creating a usable and effective professional portfolio

Computer science students: learn how to write!

“The single most important skill I learned in university while getting a degree in Computer Science was how to write better. Everything important you do in your professional life is about communication.”

Teach yourself programming in 10 years

“Researchers have shown it takes about ten years to develop expertise in any of a wide variety of areas, including chess playing, music composition, telegraph operation, painting, piano playing, swimming, tennis, and research in neuropsychology and topology.”

Module: Integrated development environments

Introduction to IDEs

ROI of IDEs, basic capabilities, our class standard IDE.

screencast 13 min

Eclipse tricks, Volume 1

Real estate optimization, the Go Into package explorer command, split screen mode

screencast 7 min

Eclipse configuration guide

Installation, the ICS-SE formatter, Web Tools extension, Word-Wrap, Checkstyle, editor configuration, file associations, refresh using native hooks

Eclipse Workbench User Guide

Editors and views, projects, resources, files, searching, and perspectives

Eclipse Java Development User Guide

Java projects, browsing, creating classes, renaming, moving and copying, navigation, searching, running, debugging.

Why can't programmers program?

“Like me, the author is having trouble with the fact that 199 out of 200 applicants for every programming job can’t write code at all.”

You can't teach height: measuring programmer competance via FizzBuzz

“If you’re hiring someone to sing, it’s reasonable to have them sing at the interview.”

Module: Coding standards

Coding standards

Motivation for coding standards, Elements of Java Style coding standards, Checkstyle

Screencast 9 min

Elements of Java Style

Best practices for Java coding

Module: Java coding

Athletic Software Engineering

An ‘athletic’ approach to software engineering education using Workouts of the Day.

WOD Weekly Rhythm

Course structure for learning by WODs

HEBS (Homework, Exercise, Breakfast, Sleep)

Lifestyle modifications to optimize WOD results

Module: UI Basics

UI Basics

Introduction to user interface design using HTML and CSS and supporting tools.

Screencast 17 min

HTML and CSS Resources

Two dozen links providing tutorials and reference material for: HTML, CSS, Google Web Fonts, Chrome Developer Tools and CSS Colors.

Module: UI Frameworks

UI Frameworks

Introduction to user interface frameworks and Twitter Bootstrap.

Screencast 15 min

Bootstrap Grids for Beginners

Introduction to the Twitter Bootstrap grid system.

Screencast 8 min

Bootstrap Example: Basic

A basic Bootstrap page layout.

Screencast 11 min

Bootstrap Example: Signin

A Bootstrap page layout for signin.

Screencast 6 min

Bootstrap Example: Bootswatch

The Bootswatch themes for Bootstrap

Screencast 7 min

Bootstrap Example: Theses Are Us

Simple bootswatch customization to make a vendor site

Screencast 15 min

Browser Color Pickers

How to use browser-based plugins to determine page colors.

Screencast 6 min

Twitter Bootstrap

Twitter Bootstrap Home Page


Color picker for Chrome and Firefox


Color picker for Chrome (only)

Module: Web Application Frameworks

Web Application Frameworks

Introduction to web application frameworks and Play

Screencast 11 min

Play Bootstrap Template

Walkthrough of a template Play system using Twitter Bootstrap 3

Screencast 12 min

Page development in Play

How to create and add pages in Play.

Screencast 13 min

Play for Java, Part 1

Read Part 1 (Chapters 1 - 3)

Play for Java Tutorial Guide

Six web pages, from Installing Play to Sample Applications

Play Coding Standards

Guidelines to make Play development easier

Module: Cloud-based Hosting

Introduction to cloud-based hosting

How cloud-based hosting facilitates team-based software development

Screencast 11 min

Introduction to version control and configuration management

Basic concepts of VC and CM, from rcs to svn to git

Screencast 24 min

Introduction to Google Hangouts

How to do same-time, different-place collaboration using Google Hangouts

Screencast 13 min

Collaborating via GitHub and Google Hangouts

Combining GitHub and Google Hangouts to support team-based software development

Screencast 8 min

Pro Git, Chapter 1

About version control, a short history of git, git basics

GitHub Basics

Signup, setup git, create a repo, fork a repo, be social, try git

Linus Torvalds on Git (Why Subversion Sucks)

Google Tech Talk (optional, but interesting (1M+ views))

Screencast 70 min

GitHub Guidelines

Standards for using git and GitHub in this class

Module: Dynamic web applications

Introduction to dynamic web applications

Overview of handling user input and providing custom responses.

Screencast 5 min

GitHub for practice WODs

Using branching to simplify your practice WODs.

Screencast 11 min

Introduction to Play forms

Processing forms in the Play framework.

Screencast 24 min

Form validation in Play

How to validate form data in the Play framework.

Screencast 16 min


Create, Read, Update, Delete in Play

Screencast 12 min

Play for Java, Chapter 5

Controllers: Handling HTTP requests

Play for Java, Chapter 6

Handling user input

Play for Java, Chapter 8

Producing output with view templates

Java ToDo List Tutorial

Play Framework tutorial in creating a simple todo list application.

Module: Dynamic web applications, Part II

Introduction to play-example-form

A Play application template showing advanced form controls.

Screencast 16 min

Scala templates

Play Framework documentation on the Scala template engine

Scala template tips

Sample code for common Scala template operations

Module: Cloud-based Deployment

Cloud-based Deployment

Introduction to cloud-based deployment.

Screencast 11 min

Cloud-based Deployment (by CloudBees)

What I said, except 80% less time and 200% more cool.

Screencast 2 min

Introduction to ClickStart

Using the ClickStart deployment wizard for CloudBees.

Screencast 2 min

CloudBees Readings

Links for getting started with CloudBees and Play

Module: Startup Weekend

UH Startup Weekend

Overview of the Fall 2013 UH Startup Weekend

Module: Authentication and authorization

Introduction to authorization and authentication

Example code using the play-example-login system.

Screencast 16 min

Merging your WOD branches

Dealing with all the branches you’ve created due to your WODs.

Screencast 6 min


Sample play application implementing authorization and authentication.

Module: Model design

Introduction to model design

Models in MVC, persistency, ER concepts

Screencast 17 min

ER Diagramming using Lucid Charts

How to use Lucid Charts to create your ER Diagrams

Screencast 6 min

ER Modeling Readings

A collection of helpful readings on ER Modeling

Play for Java, Chapter 7

Modeling and persistence

Model design guidelines

Standards for model design in this class

Module: Model implementation

Introduction to model implementation

MySQL, eBean ORM, and the play-example-mysql application

Screencast 18 min

MySQL tutorial

Connecting, disconnecting, queries, databases, batch mode, query examples


Connecting, disconnecting, queries, databases, batch mode, query examples

Play for Java, Chapter 7

Modeling and persistence

EBean ORM Readings

Links for getting started with EBean object-relational manager

MySQL Clients

Links to open source MySQL clients for Windows, Mac, and Unix

Model implementation guidelines

Standards for model implementation in this class

Module: Testing

Introduction to testing

Motivation, white box, black box, coverage, tool support

Screencast 32 min

Testing in the Play Framework

Play’s built-in support for testing

Screencast 10 min

Introduction to play-example-fluentlenium

A Play application illustrating Fluentlenium and the page object pattern for testing.

Screencast 13 min

Testing in play-example-form

Illustrates Fluentlenium in play-example-form (link starts at minute 22)

Screencast 6 min

JUnit Tutorial

Introduction to the most popular Java unit testing framework

Fluentlenium Home Page

A wrapper around JUnit for testing web applications.

The Page Object Pattern

A useful design pattern for organizing your test code.

FEST Assertions

More readable tests (see FluentAssertions section).

Module: Final Exam

Final exam examples

Example final exams

Module: Meta-module: Athletic Software Engineering

Athletic Software Engineering Education

My Summer 2013 blog post describing the idea of athletic software engineering.

Athletic Software Engineering

An ‘athletic’ approach to software engineering education using Workouts of the Day.

WOD Weekly Rhythm

Course structure for learning by WODs

HEBS (Homework, Exercise, Breakfast, Sleep)

Lifestyle modifications to optimize WOD results

End of semester reflections

Student feedback on athletic software engineering, Fall 2013

Practice WOD repetitions

Data on how often students repeated the practice WODs.

WOD Performance trends

Visualizations showing WOD performance and DNF trends over the Fall, 2013 semester

University of Hawaii course evaluation results for ICS 314, Fall 2013

Results from the eCafe anonymous end-of-semester student course evaluation.

Athletic Software Engineering Education: Initial Results

My Winter 2013 blog post summarizing my initial findings from teaching in an athletic software engineering style.