Allen Gunn
Instructor,
Foothill College
Email: arg7149@fhda.edu
Howdy. Most
folks call me gunner, and I teach Java and Web development at
Foohill College. This includes CIS27A, CIS27B, and CIS27C (Java
I/II/III), as well as COIN61 (Intro Web/HTML).
Java Curriculum
Overview
I teach what
I describe as "vocational Java", meaning that we focus
on how Java is used in the workplace rather than dwelling on noodly
theory and esoteric topics.
I cast Java
as the wand of reason in a morality play that pits the evil twin
forces of Marketing and Management against the noble corps of
Engineering and their steadfast allies in Build/Integration, Quality
Assurance (QA) and Documentation. I stress the human, social and
political aspects of Java development in parallel with the technical
details and programming concepts.
As a class,
we learn how to apply Object-Oriented Analysis and Design (OOA/D)
modeling techniques to properly abstract and encapsulate our models,
thereby maintaining control of the software development process
and insulating ourselves against the vagaries and whims of management
and the market. This ain't your parents' "where to put the
semi-colons" kind of programming class.
In the classroom,
we operate as a de-facto engineering group, playing off each others'
questions and insights. Students are strongly encouraged to talk
to strangers and network with peers as they would in an actual
Silicon Valley firm. The class format is always driven by learner
questions; students know that it is their responsibility to ask
a question whenever they are confused or unclear on a topic or
point.
Class programming
projects build incrementally across the quarter. In CIS27A/Java
I, we build a banking model, starting with a simple "BankAccount"
class that is then specialized into "CheckingAccount"
and "SavingsAccount" classes. From there we construct
a "Bank" class to store these account objects, as well
as supporting "Customer" objects, "Transaction"
lists, and even printing of "monthly statements".
In CIS27B/Java
II, we code a fully interactive Swing "Draw" application,
keeping the focus on software design process and OO modeling.
Beginning from a simple "Shape" class, we review class
hierarchies and class design as we create specialized types like
"Rectangle" and "Oval". We construct a simple
document model to store shape objects, utilizing the Java IO classes
to stream data in and out of the application, and leveraging Java
interfaces to generalize the interaction between the "ShapeDocument"
and its contents. Finally, once the plumbing is done, we dive
into Swing, learning Graphical User Interface (GUI) history and
concepts before coding our clickin' draggin' menu-waggin' interactive
drawing application.
Below are
the "greensheets" for the CIS27A and CIS27B courses:
Web/HTML
Curriculum Overview
My introductory
Web/HTML class is a study in guerrilla web design. We focus on
substance rather than sizzle (Flash sites indeed being the demon
spawn of the unholy Marketing/Management union). Our goal is to
learn how to author the most effective site while expending the
least amount of time and money.
Starting
with basic HTML syntax and internet concepts, we explore all the
core tags and constructs including tables, frames, and style sheets.
We prepare ourselves to author fast-loading, clean-rendering sites
that are easy to maintain and evolve.
Students
are warned from the first class that their final project will
entail identifying a real-world client who needs a web site, then
building and delivering that site from scratch (popular client
choices have included "my spouse/partner", "my
dog", and "my yoga instructor").
Working from
a requirements-driven process, each student identifies their client's
audiences and goals, proposes and refines a site map, prototypes
page designs and graphic look, and finally pours and publishes
the site.
Below is
the "greensheet" for the COIN61 course: