Readings "Passive" learning opportunities

This page collects together all of the “readings” associated with individual modules.

In this site, readings represent “passive” learning opportunities, as opposed to experiences, which represent “active” learning opportunities. In many courses, readings and experiences together constitute the “assignments”.

Module: Introduction

Guided tour of Morea course websites

How to use this website to succeed in ICS 314

Guided tour of the Introduction module

Introducing the introduction.

Introduction to ICS 314

Goals, texts, prerequisites, and more

Grading

How grades for this class will be determined

Laptop requirements

The hardware you need to succeed in software engineering

Athletic Software Engineering

An overview of Athletic Software Engineering and results from AY 2016-2017

WOD Weekly Rhythm

Course structure for learning by WODs

TA Portfolio

Get to know your TA from their professional portfolio

How to watch screencasts the smart way

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

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…”

How writing can advance your career as a developer

“I didn’t take a single English class to receive my undergraduate engineering degree. It’s a shame because writing has been arguably one of the most important skills I’ve had in my career as a software engineer and team leader.”

ICS 314 Syllabus

Basic information about the class

Rules of the WOD

WOD during a pandemic

Module: Professional Persona

Guided tour of the professional persona module

Why, what, how, and when you will learn about professional personas.

Professional Persona

Concepts of a professional persona

Professional portfolio style guide

Guidelines for creating a usable and effective professional portfolio

Technical essay style guide

Guidelines for creating high quality technical essays

ICS Portfolios

Hundreds of portfolios created by UH students just like you.

TA Portfolio

Get to know your TA from their professional portfolio

Tips on debugging your TechFolio

Most common problems encountered with TechFolios

Professional portfolio: Fall 2021 Feedback

Feedback on initial portfolio submission

Module: Javascript 1: Basics

Guided tour of the Javascript 1 module

Why, what, how, and when you will learn about Javascript, Phase 1.

7 reasons why Javascript is better than Java and C++

Why you want to learn Javascript (even if you don’t do web app development)

Introduction to JSFiddle

Quick introduction to the JSFiddle Javascript environment

AirBnB Javascript Style Guide

Javascript style guidelines for ICS 314

ES6: for-of, for-in

How to iterate over arrays and objects in ES6

Module: Open Source Software

Guided tour of the open source software module

Why, what, how, and when you will learn about open source software.

Open Source Software

History of open source, licenses, prime directives, how to participate effectively

Understanding Open Source Licensing

Short summary of copyright, copyleft, and the motivation for open source licenses.

Choose a (open source) license

Simple overview of several open sources licenses and their implications.

How to ask questions the smart way

The classic guide to how to participate in the open source community effectively

The three prime directives for open source development

Three simple rules for assessing the open source quality of your project.

The Cathedral and the Bazaar

“I anatomize a successful open-source project, fetchmail, that was run as a deliberate test of some surprising theories about software engineering suggested by the history of Linux.”

Research Update: Impact of the Ask Question Wizard

What happens when StackOverflow automates the process of asking Smart Questions

Ceci ñ'est pas une programme

Why you should not upload images of your code when asking for help.

Module: Javascript 2: Object orientation

Guided tour of the Javascript 2 module

Why, what, how, and when you will learn about object orientation in Javascript

Object Orientation: Java vs. Javascript

An beginners guide to objects in Java and Javascript

Tutorial on ES6 classes (Vegibit)

Tutorial on JS classes

Tutorial on ES6 classes (ExploringJS)

Comprehensive reference on ES6 classes

Tutorial on ES6 classes (Mozilla)

Introduction to classes, showing how they evolved from prior JS idioms

ES6: template strings

Use templates to simplify string construction

Module: Configuration management

Guided tour of the configuration management module

Why, what, how, and when you will learn about configuration management

Introduction to version control and configuration management

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

Introduction to GitHub Desktop

How to use GitHub Desktop for this class

Introduction to GitHub Desktop, Part 2 (Branching and Merging)

Branching and merging with GitHub Desktop

Introduction to GitHub Desktop, Part 3 (Merge Conflicts)

Merge conflicts with GitHub Desktop

Local Repository Directory Path: No Spaces!

No spaces in the path to your local git repositories

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

Module: Javascript 3: Functional programming

Guided tour of the Javascript 3 module

Why, what, how, and when you will learn about functional programming in Javascript.

Functional programming in Javascript

Understand the basics: how to use functions as values, functions as arguments, and functions as return values.

Stop writing for loops. Start using underscore.

Make your code more compact and understandable with Underscore.js

Underscore home page

Reference guide to underscore functions

Use the source, Luke!

Annotated source code for Underscore. Highly readable.

Module: Development Environments

Guided tour of the development environments module

Why, what, how, and when you will learn about development environments

Introduction to Development Environments

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

Diagnose IntelliJ startup delays

Hints for improving performance if needed

Configuring IntelliJ IDEA for MacOS

Configuring your Mac so that IntelliJ keyboard shortcuts work as advertised.

ICS Code Style for IntelliJ IDEA

An XML file containing code style preferences for this class.

IntelliJ Brainscape Flashcards

Online IntelliJ keybinding flashcards made by Blake Wallick

Top 15 IntelliJ IDEA shortcuts

Highly useful keyboard shortcuts.

Module: QA Part 1: Coding standards

Guided tour of the coding standards module

Why, what, how, and when you will learn about coding standards

Introduction to coding standards

Why use coding standards, and how we will use them in this class

JS on the client vs on the server

JS can be run on the server (your laptop) or on the client (your browser). Here’s how.

Javascript coding standards

Javascript coding standards to observe in this class

AirBnB Javascript Style Guide

Javascript style guidelines for ICS 314

Symbolic Links in Windows 10

Handling user names with spaces in Windows 10.

Module: UI Design (Basics)

Guided tour of the UI Design (Basics) module

Why, what, how, and when you will learn about user interface design basics.

UI Design Basics

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

Getting started with Google Web Fonts

How to use the Google Web Fonts API to add fonts to your web pages.

Ten Google WebFont Combinations

A hand-picked set of 10 title/text font combinations.

Chrome Developer Tools

Documentation for the developer tools associated with the Chrome browser.

Module: RadGrad

RadGrad in 60 seconds

Why use RadGrad? Two reasons!

RadGrad: Motivation

Why we created RadGrad

Module: UI Design (Frameworks)

Guided tour of the UI Design (Frameworks) module

Why, what, how, and when you will learn about UI Design and framework support.

UI Frameworks

Introduction to user interface frameworks.

Browser Color Pickers

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

7 rules for creating gorgeous UI (Part 1)

A non-artsy primer in digital aesthetics.

7 rules for creating gorgeous UI (Part 2)

A guide to visual aesthetics, written by a nerd

Clean up your mess: A guide to visual design for everyone

If you’re like most people, you feel like a baby when it comes to visual design. You sometimes have a vague sense of what you want, but can’t articulate it or make it come about. All you can do is point and cry…

Semantic UI Hello World

Quick start to using Semantic UI with IntelliJ

Color Blocked Home Pages

A common design pattern for home pages

Spaces vs non spaces in CSS rules

What’s the difference between ‘.classA.classB’ and ‘.classA .classB’?

Introduction to GitHub Desktop, Part 2 (Branching and Merging)

Branching and merging with GitHub Desktop

Module: UI Design (React)

Guided tour of the React module

Why, what, how, and when you will learn about React

React Docs

React official reference documentation

Semantic UI/React Docs

Official Semantic UI/React documentation

Meteor, Node, and NPM tips

Trouble shooting for Meteor, Node, and NPM

Module: Databases (MongoDB)

Guided tour of the Mongo module

Why, what, how, and when you will learn about Mongo

Module: Application Design (Meteor), Part 1

Guided tour of the Meteor, Part 1 module

Why, what, how, and when you will learn about Meteor, Part 1

Introduction to Web Application Frameworks

Ruby on Rails, Spring, Meteor, Request-Response, AJAX, LAMP, MEAN

Meteor Fundamentals

What makes Meteor different? What concepts do I need to understand as a newbie?

Meteor for Newbies: Application Structure

How to organize your files to make a Meteor application

Tips for Meteor

Advice from students on how to improve your Meteor experience

Tips for installing Meteor on Windows

Advice from Cam on how to install Meteor for Windows

Meteor debugging: Named vs. Default Exports

Getting named vs. default exports right, and what happens when they go wrong

Meteor Q&A (Fall 2020)

Responses to student questions in Fall 2020.

Module: Application Design (Meteor), Part 2

Guided tour of the Meteor (Part 2) module

Why, what, how, and when you will learn about Meteor (Part 2)

meteor-application-template-react

Template for quickly starting Meteor development projects.

meteor-example-form-react

Illustrates simple form processing with React and Uniforms

Bowfolios

Illustrates a simple, final project style web application

React Uniforms

A package to simplify form management in React and meteor

Meteor Guide: Introduction

About Meteor

Meteor Guide: Code Style

Suggested style guidelines for your code

Meteor Guide: Collections and Schemas

How to define, use, and maintain MongoDB collections in Meteor.

Meteor Guide: Publications and Data Loading

How and where to load data in your Meteor app using publications and subscriptions.

Meteor debugging: Named vs. Default Exports

Getting named vs. default exports right, and what happens when they go wrong

Understanding data in Meteor in development mode

Connecting to and manipulating server-side and client-side data during development

Refreshing the data in development and deployment

How to clear and reinitialize the database.

Meteor Debugging Strategies

High level approaches for debugging a Meteor application

Module: Application Design (Meteor), Part 3

Guided tour of the Meteor (Part 3) module

Why, what, how, and when you will learn about Meteor (Part 3)

Meteor Debugging Strategies

High level approaches for debugging a Meteor application

AMA: Branden Ogata on Meteor

Branden answers your questions on Meteor from Spring, 2019

Meteor Guide: Introduction

About Meteor

Meteor Guide: Code Style

Suggested style guidelines for your code

Meteor Guide: Collections and Schemas

How to define, use, and maintain MongoDB collections in Meteor.

Meteor Guide: Publications and Data Loading

How and where to load data in your Meteor app using publications and subscriptions.

Meteor DevTools Evolved

An essential Chrome plugin for Meteor development

Final Project Brainstorm

Develop a Final Project idea

Module: Agile Project Management

Guided tour of the agile project management module

Why, what, how, and when you will learn about agile project management

Introduction to common software development processes

Waterfall, Spiral, CMM, Agile…

Introduction to issue driven project management

The agile software process to be practiced in this class

IDPM Guidelines

Guidelines for the IDPM agile software process

GitHub hosting project management guidelines

Guidelines for using GitHub effectively for project hosting

Mastering Issues

GitHub documentation on their Issue manager

Tracking the progress of your work with Project Boards

GitHub documentation on their Project Boards tool

GitHub Issue Guidelines

Guidelines for GitHub Issue Specification

IDPM AntiPatterns

Don’t use forks, pull requests, or rebasing with IDPM

Module: Deployment

Guided tour of the Deployment module

What’s in store for this module.

How to deploy software

Deployment goals. Preparation, branching, controlling, and monitoring deployments.

Deploy a Meteor app to Digital Ocean

Deploy using Meteor Up to Digital Ocean

Monitor MongoDB at Digital Ocean

Inspect your MongoDB database on Digital Ocean using Robo3T

Meteor Application Performance Monitoring

Use Monti APM for development and production

Custom domain names for Digital Ocean

How set up a custom domain name for your Meteor application

Setup HTTPS

Use Meteor Up to set up HTTPS on Digital Ocean

Refreshing the data in development and deployment

How to clear and reinitialize the database.

Module: Testing

Guided tour of the testing module

Why, what, how, and when you will learn about testing

Introduction to testing

Motivation, unit, integration, and acceptance testing, and continuous integration

Introduction to acceptance testing in Bowfolios

How to use TestCafe to test the BowFolio system.

Meteor Guide: Testing

How to test Meteor applications

Mocha: A Javascript Test Framework

Reference guide to Mocha

Chai: A Javascript Assertion Library

Reference guide to Chai

Test Cafe: A Javascript Acceptance Test Framework

Reference guide to TestCafe

The testing pyramid should look more like a crab

It’s time to fully embrace end-to-end (acceptance) testing

Module: Ethics in Software Engineering

Guided tour of the ethics module

Overview of the ethics module

What do we mean when we talk about ethics?

Definition of ethics, ethics in software engineering, personal vs. professional ethics

ACM Code of Ethics

This Code identifies a commitment to ethical professional conduct through 24 statements of personal responsibility.

ACM Software Engineering Code of Ethics and Professional Practice

This Code contains eight Principles related to the behavior of and decisions made by professional software engineers.

Module: Design Patterns

Guided tour of the design patterns module

Overview of the design patterns module

Introduction to design patterns

What are design patterns? Why are they useful?

Design pattern examples in Bowfolios

A walkthrough of Bowfolios, illustrating its design patterns

Module: Final Project

Software Engineering Requirements

General process and product requirements

Project: Campus Jam

Requirements for a UHM music jam locator

Project: Club Hub

Requirements for a UHM Student Organization directory application

Project: Manoa Flea Market

Requirements for a UHM Flea Market application

Project: Manoa Munchies

Requirements for a UHM Munchies application

Project: Study Buddy

Requirements for a UHM Study Buddy application

Project: Toaster Oven Lovin'

Requirements for a UHM recipe application

Project: Company Connector

Requirements for a UHM employment locator

Meteor mockup development tips

Common issues when creating your first application mockup

Basing your final project on your HACC challenge solution

Constraints your HACC challenge must satisfy to be appropriate for your final project.

Fall 2021 Project Ideas

Student-generated project ideas for Fall 2021

Module: HACC

HACC Home Page

The Hawaii Annual Code Challenge Home Page

HACC 2016

Reflections on my experience participating in the 2016 HACC

HACC 2017

ICS 314 students clean up at HACC 2017

HACC 2018

ICS students win big at HACC 2018

HACC 2019

UH Mānoa students code their way to victory

HACC 2020

UH Mānoa sweeps Hawaiʻi Annual Code Challenge

HACC Tips

How to win the HACC