CS436S
Prof. Loui
Spring 2006

OFFICIAL DESCRIPTION:

CSE 436S.  Software Engineering Workshop   

An introduction and exploration of concepts and issues related to
large-scale software systems development.  Areas of exploration include
technical complexities, organization issues, and communication techniques
for large-scale development.  Students participate through teams emulating
industrial development.  The project covers the principal system
development life-cycle phases from requirements analysis, to software
design, and to final implementation.  Issues relating to real-time control
systems, human factors, reliability, performance, operating costs,
maintainability and others are addressed and resolved in a reasonable
manner.  Prerequisite: CSE 332S.  Credits: 3 unit

Ronald Prescott Loui    
Class: SP2006 E81 CSE 436S 01: Software Engineering Workshop 
Location: Cupples II 220 -T----- 4:00PM 5:30PM
Location: Lopata House 21 ---T--- 4:00PM 7:00PM 
Session: REG Start: 01/17/2006  End: 05/19/2006  


Compare with

	OBJECT-ORIENTED SOFTWARE DEVELOPMENT LABORATORY E81  332S  CSE

	Formerly CS 342S.       Intensive focus on practical aspects of
	designing, implementing and debugging object-oriented
	software.  Topics covered include developing, documenting, and
	testing representative applications using object-oriented
	frameworks and C++.  Design and implementation are central
	themes to enable the construction of reusable, extensible,
	efficient, and maintainable software.  Prereqs: CSE 132/CS 102G
	and 241.  3 units.

	E  DU 2,  SU 1,  TU 3 01  TuTh 4:00p-5:30p   LXXI Kuhns
	Laboratories:  A  F 1:00p-2:30p    Kuhns B  F 2:30p-4:00p
	Kuhns


	SOFTWARE PROJECT MANAGEMENT E81  528S  CSE

	Formerly CS 585S.       An introduction to the issues and basic
	methods used in managing software development projects. The
	course will include factors affecting software projects,
	life-cycle models, project scheduling, size and staffing,
	progress tracking, software metrics, managing people, and
	crisis management.  The course will include lectures, hands-on
	training in selected project management tools, and case
	studies.  In addition, each student will plan and manage a
	simulated software project. The course is designed to
	familiarize software engineers and computer scientists to the
	issues and problems involved in managing software projects.
	Prereq: CSE 436S/CS 456S, significant industrial software
	development or permission of instructor.  3 units.

	01  M 7:00p-9:30p   XXXII Rouse

REQUIRED TEXTS:
	The Art of Project Management Berkun, Scott  0596007868

	The Pragmatic Programmer: From Journeyman to Master Hunt, Andrew
	020161622X

RECOMMENDED TEXTS:

	ART OF UNIX PROGRAMMING RAYMOND  0131429019

	HACKERS & PAINTERS GRAHAM  0596006624

	CODE COMPLETE 2ND MCCONNELL  0735619670

	PEOPLEWARE 2ND DEMARCO  0932633439

ALSO REQUIRED: 

	Library access to a "traditional" software engineering methods
	book, TBA

	e.g.,

	Fundamentals of Software Engineering: Carlo Ghezzi, Dino
	Mandrioli, Mehdi Jazayeri Hardcover, Illustrated, 2002 - Buy it
	for $28.25 (Save 71%)

	Software Engineering: Ian Sommerville
	Hardcover, 2004 - Buy it for $29.53 (Save 72%)

	Software Engineering Fundamentals: Frederick J. Hudson
	Hardcover, 1996 - Buy it for $57.00 (Save 52%)

	Software Engineering: A Practitioner's Approach: R. Pressman,
	Roger S. Pressman Hardcover, 2004 - Buy it for $65.99 (Save 43%)

	Component-Based Software Engineering: Putting the Pieces Together:
	William T. Councill Hardcover, 2001 - Buy it for $11.50 (Save 79%)

	Extreme Software Engineering: A Hands-On Approach: Daniel H.
	Steinberg, Daniel W. Palmer Paperback, 2003 - Buy it for $20.99
	(Save 40%)

REQUIREMENTS AND GRADING:

	Play of Professor Loui's Software Engineering Game = 75% of grade
	(closely related to Attendance and Project Completion)

	Late Midterm Quiz on SE PRINCIPLES = 15% of grade

	Subjective Evaluations of Professor and Peer Students = 10% of grade

	You will be programming in teams in a variety of languages and
	platforms, depending on which projects you are awarded.  The
	emphasis of this course is not on learning-through-programming.
	The emphasis of this course is on project component management and
	engineering, and we will learn by doing large and small software
	projects.

SP06 PREREQUISITES:

	You should be able to develop in a variety of languages on
	a variety of platforms.  It is not assumed that anyone has all
	skills or that everyone has any particular skill.  Your grade
	does depend to some extent on your ability to contribute
	software development, as well as managerial and team activity.

COURSE OBJECTIVES:

	This course is structured so that students can experiment
	with leadership, software management, and software engineering
	methods.  The actual content of the course includes material
	from all three foci, in roughly equal amounts.

NOTE ON TEXTS:

	The software engineering material is usually contained in a
	textbook that is unduly expensive.  Instead, we will use online
	and library resources, and will not require all students to 
	acquire the same standard text.  This is not a diminishing of
	the importance of this material, as we will have teams presenting
	this material under contract during the semester.

	The required texts, while not strictly necessary for the
	course (except perhaps a few projects and maybe the quiz),
	should probably be purchased.  Having them on your shelf at
	the first job you find, and having them look like you used them,
	will probably help you get promoted!

PROFESSOR EXPERIENCE

	This professor has taught this class under the number 456 once in
	the past.  It was said to be the first offering to include actual
	implementation, not just specifications, but that may not actually
	be true.

	I currently spend much of my time doing software project
	management and software project engineering.  Although I am not a
	proponent of many of the academic methods of software engineering,
	I agree completely that this may be the most important course you
	take as an undergraduate, that it should be a team-laboratory
	capstone course, and that the students have a lot to learn.
	Most of the time we spend on projects is spent in meetings, 
	or preparing for meetings, not actually programming.

	I have been a software developer, engineer, consultant, and
	analyst in high school and college (in a large custom software
	house called IDS, Industry Data Services, and a civil engineering
	firm, D. Hirota Engineering), as a graduate student and postdoc
	(at DEC, Rockwell, HP, and Xerox), as a young professor (at
	McDonnell Douglas and SBC/TRI), recently (at a local startup
	called Streamsearch.com), and currently (in a collaboration with
	Global Velocity and other contractors on a government project).
	At Wash U, I have designed and supervised several hundreds of
	software projects in many languages and platforms.

	Some salient memories of platforms, languages, and software people:

	1975-1979       We have high school zits, but we also have access
	to HP2100 time shared Dartmouth BASIC, assembler, HP9100B, HP
	programmable calculators, a CRT, paper tape, card reader,
	teletypes, Fortran, PL1, RPG, and COBOL manuals.  Our teacher,
	Wells Lawrence, was one of the few U.S. fighter pilots in the sky
	on Dec 7 above Pearl Harbor.  We write a lot of games in BASIC,
	including chess, and Elton Inada is top dog, writes notes on
	lockers in hex, plays my diophantine factoring-in-the-head
	game, edits 10,000 line assembly language programs in paper tape!

	1977    I am programming in an unusual structured basic (no line
	numbers) on Microdata desktop workstations and the new ADDS
	z8000's, using the Pick OS, the ENGLISH database language (an
	early SQL), and the PROC/BATCH job control language (think of
	bash).  My mentor, Gene Johnson, is a close friend of Dick Pick
	and assembly language GOD.  He advises to stay away from the big
	IBM machines and COBOL and praises me for guessing other people's
	passwords.  Gene carries project specifications in special blue
	company binders that go in the top drawer of his desk.

	1979    Same languages, but on fast Prime Computers running
	PRIMOS, I am writing syntax preprocessors for porting programs.  I
	spend a lot of time in the Marketing Support department making
	friends.  Marketing has been calling the shots ever since it got
	its own seat at the executive table (its own VP).  We also love
	our little PDP-11's.

	1979	UNIX environment is new at Harvard.  Jerry Dunietz
	(one of first Microsoft employees) encourages me to learn vi
	and c.  I experiment with ECL/PPL in great disgust.  Jon Doyle
	(MIT AI Lab) encourages me to switch to LISP.  My brother Mike,
	also at MIT CS, advises me not to waste time on undergraduate CS
	classes, esp. at Harvard, where the emphasis is on databases
	("databases are dead."  ha ha ha).  If only my brother had been
	named Peter Weinberger.  I offend people by sending email entirely
	in lower case.  Sysadmins Gail Kaiser and Sharon Eisner think it's
	ok.

	1980    I am an early user of VMS on a VAX 11/780, using edt,
	programming in Fortran.  Something called Forth attracts my
	attention, too.  My first consulting opportunity -- I recommend
	some crazy Olivetti PC clone for a venture capital office
	(because its case looks nice); they are smarter than I am and
	order IBM PC's instead.

	1982    An interview at Draper Labs gets me behind the secure door
	for the first time.  I learned that the DEC-20 can cons and car
	very quickly.

	1982    At DEC, again in VAX/VMS, now in c (DEC is getting serious
	about UNIX).  Interns overhear Ken Olsen cussing "God damn RISC,
	God damn UNIX!"  I work for Dah Ming Chiu, who works with Raj Jain
	(yes, our Wash U Raj Jain).  No luck getting $2500 for a dual
	proc, dual boot DEC Rainbow 100 (my stupidity) so I buy Infinity
	RSII speakers instead.  I pity the expert systems group nearby
	that has to coordinate a hundred systems people editing a single
	rule base.

	1982    At Rochester, introduced to the Alto (the original
	ethernet, mouse, bitmapped, wysiwyg machine), the butterfly, the
	D-machines, etc.  I adore bravo, but not postscript so much, and
	certainly not print-server crashes.  Jerry Feldman makes us
	program in SAIL and MESA, among other awful things.  We're all
	cribbing from Avie Tevanian, the only one who gets MESA (before
	Avie went to CMU, then Next, then Apple -- rumor is that Avie
	wrote half of the code in today's MacOS -- yeah, that Avie
	Tevanian).  Rochester's best is an assembly language hacker named
	Clint Parker, who wrote beautiful bitmapped, multiplayer,
	ethernet-based games.  All the best programmers can handle
	assembly.  Leo Hartman lectures me that "the UNIX file is your
	database, and your database languages are called grep, sed, and
	awk."  Thank you Leo!

	1983    I met Ken Thompson and Lotfi Zadeh at the ACM awards
	conference.  I guess Grace Murray Hopper was there, too, but I
	don't remember her saying much.  I do remember every minute of
	Thompson's short Turing talk, on the trojan horse he placed in the
	c compiler, and the plea to try to understand hackers.

	1985    I am still hoping someone will buy me an Atari 520ST.  One
	brother keeps talking about DBMS on CP/M and local networking
	PC's.  I tell people I like ALGOL, just to sound smart (but
	it doesn't help).  People in Harvard Square talk about something
	called Lotus-1-2-3.  I don't get it -- why don't they just use
	a calculator?

	1985    I am a UNIX Franz Lisp man, teaching Pascal, hating
	Babbage, playing with Icon, APL, and VHDL, and secretly admiring
	our UNIX gurus, Brian Marsh and Alan Cox.  Dana Nau tries to turn
	me on to Flavors Lisp (object-oriented lisp) without success.
	Garbage collection upsets us all.

	1985    I study various versions of Basic on the Macintosh and
	decide they are all rubbish because they spend a lot of time
	managing GUI objects.  I was right they were rubbish, but not
	because of the GUI stuff.

	1986    MACSYMA looks horrid.  Xerox Star is pretty good, but
	somehow has lost something from the original Bravo.  Troff is for
	real computer scientists, but not me.

	1987    John McCarthy never mentions Lisp in our presence.  A
	chance to buy into Jack Breese, Eric Horvitz, and David
	Heckerman's company, later bought by Microsoft, but they use
	expert systems shells, ptui.

	1988    At Rockwell Palo Alto, they are using Scheme -- this is
	one of those huge NASA subcontractor projects.  I don't even know
	if my work was for the project or not!  My friend Noemi Berry, who
	helped pioneer usenet social chatting, gets a job in silicon
	valley at a networking company doing a LOT of shell programming.
	I think she mentions something called perl and how powerful
	and easy it is...

	1988    I am happy to have a new Sun workstation.  I cast my vote
	as a first year professor to move from Pascal to Scheme for CS1.

	1989	I hate Latex.  Mike Gaddis shows me FrameMaker.

	1990    McDonnell Douglas asks me to sit in on F18 sensor fusion
	project reviews... they are using something called C++.  This is
	another huge project.  I am looking at TCL/TK/expect for the AI
	class so they can write their own rogomatics.  Also using a lot of
	Hayes modem and {X,Y,Z}-modem command sets.

	1991	Steve Cousins keeps trying to get me interested in
	something called HyperCard and HyperText on the Apple.  He sells
	me his used laptop, a Toshiba T1000, and I grudgingly learn DOS,
	finally, with help from my brother Terrence and Jeff Norman.  Bill
	Ball and Guillermo Simari love PROLOG; I do not.  Some guy named
	Scott Hassan is on my payroll... he later helps google get
	started.  I'm also putting up with Wash U prodigies Karl
	Stiefvater, Bryan O'Connor, and Brian Gottlieb for the next few
	years, who later find fame with Yahoo and the MATRIX.  Smartest
	thing I ever did was spend time listening to students and their
	technology interests instead of colleagues.  Did any of them
	finish their degrees on time?

	1992    I met Richard Stallman this year at his office in the MIT
	AI lab during a conference in Boston -- I was actually visiting
	ex-sura students QX Zondervan and Jennie Dorosh -- Q and I snuck past
	the guards after hours, and I think this impressed Stallman.  Back
	at Wash U, in the biz library, some business student wants me to
	help him build a business screwing together computers from
	components and selling them -- I say NO.  Michael Dell, I am not.

	1992    The last time my students work in LISP, ha ha ha.  Thieu
	Dang, Jeremy Frens, and I use gawk as a call-out language for
	formatting arguments in vi in UNIX and DOS, for creating a UNIX
	environment in DOS, for cs313 simulator, and with other students,
	for SBC/TRI expert system, datamining and price predicting, for
	newsgroup filtering, and building the harvard internet alum server
	using .forward pipes.  U Washington Oren Etzioni asks how I did it
	-- I tell him to learn gawk or perl, and soon there is
	metacrawler.  Tom Gordon tells me about something called SGML for
	marking up legal cases.  I keep buying and selling Sun
	Microsystems stock until I can afford a used '82 Jaguar XJ6 Mk3.

	1993    We add Adam Costello's rd and rcstat to Mark Kantrowitz's
	AI Code Repository.  I still believe neural nets are evil.

	1994	I am proudly attending dept meetings with an early
	PDA, an HP200LX.  Best thing:  a whole week in Argentina on one
	pair of AA batteries.  Ha.

	1995    I supervise my first c++ project, as Solomon Reda tries to
	upgrade Adam Costello's c code.  I admit I am late to adopt the
	web because it is Lorrie Cranor's thing.  Diana Moore convinces me
	to give in to the web, instead of using one big .plan file to
	disseminate my essays.  Dan Craven turns Joe Altepeter and me onto
	CGI.  Almost everything Patti Maes is talking to the press about
	at the MIT Media Lab we have already done in CS313.

	1996    I buy my first machines on grant money -- PC's.  Two P1
	workstations, and the best PC in the dept, a Micron dual PPro
	180.  Dan Kimura sells me two 486 boxes.  I supervise my first
	Java project, because Nina Kang wants to learn Java.  As will be
	the case for the next ten years, the project is slow-going, overly
	complex and top-down, and the implementation falls short of spec,
	despite the obvious talent of the programmer.  Jeff Norman
	convinces me to try OS2 Warp 4, and some European colleague swears
	by NT 4.0.  Both suck.

	1996    Ron Cytron lets me publish my "Why gawk for AI?" in
	SIGPLAN, which becomes a "classic scripting paper" and is mocked,
	translated, packaged with the gawk distribution.  It seems we have
	switched from Scheme, to c++, to Java as a dept within just a few
	years; moreover, we have decided to teach Java in CS1 though no
	one but Ken Goldman knows Java.  I've got two digicams:  a Casio
	QV10 and a QV30.

	1997    Michael Plezbert turns me on to Linux, and over the next
	three years, I build perhaps four score of PC's from discarded
	and upgrade components and make them available as Linux cycle
	servers for students or W95/W98 web clients, mostly 486's and
	P1's, but also some 386's and P2's, Cyrixes and AMD's.  Colleagues
	protest that I should be letting students and staff put machines
	together.  When John Lockwood arrives in 1999, we agree that our
	colleagues should "enjoy working with computers more."

	1997	Steve Cousins wants me to switch to python.  I start
	asking around, and am surprised that our best seniors still
	started out in Basic.  What is with this thing called powerpoint?
	
	1997    By now, fellow high school alum is Steve Case (AOL),
	brother's biz school mate is Scott McNealy (Sun), best friends
	demo and work for Bill Gates (MS), cousin dates Larry Ellison
	(Oracle), and physics college friend runs for governor of CA on
	Wall Street Analytics fortune.  Lots of grad and undergrad alums
	with 10-100M in options.  Even my PhD student hits big when his
	company goes public.  Why ain't I rich?

	1997    I have the best computer in the dept, alphadog, a 533MHz
	21164PC LX Alpha from DCG running Linux with 256MB RAM and two 9G
	SCSI UW drives.  I also have the only art tablet, zip drive, and
	scanner, because I have Microsoft environments, too.  Not
	surprisingly, I love benchmarking.  Surprisingly, the floating
	point benchmarks are irrelevant, and the webserver benchmarks are
	even more important than the integer specs.

	1997    We hold a symposium on interactive computing to
	investigate Peter Wegner's ideas, where I agree with Lynn Stein,
	Ken Goldman, Dan Kimura, and Doug Schmidt, that OO computing is
	the future, mainly because I want to broaden what counts as
	computing, beyond algorithms, to include the programming of
	communicating groups.  Little did I know how much I would dislike
	OO for freshman programming soon.

	1998	Is this the year some student made me look at Goo
	(a lisp dialect)?  I guess we just can't get away from Lisp.

	1999	John Lockwood tells me what FPGA's are good for.
	With Marcel Waldvogel, Michael Pachos, and Kevin Krouse, we are
	looking at perl and gawk internals, bugging Doug Lea about
	mmmalloc, and begging Arnold Robbins to change the average hash
	chain length.  Steve Sachs and I try to write (with Winnie Yang)
	a text on CGI in gawk, but abandon the project after 450 pages,
	in part because everyone wants perl!

	1999    The last time I did cs456(436).  Corba group runs
	roughshod over others because they can drive the specs.  I've got
	two more digicams:  a sony f55 and an f505.  More importantly, the
	memory stick in a PCMCIA or USB reader makes a nice early jump
	drive.

	2000    Summer at streamsearch doing log analysis and cgi magic
	with old friend Mike Swain (of Altavista) as CTO.  Pat Niemeyer is
	talking about BeanShell; Ed H and I are looking at PHP.  I begin
	my yearly assault on CEC:  please get rid of the Sun machines, or
	at least the old Sun keyboards, please buy some Linux boxes,
	please add space to project accounts, please give cs students some
	cycle servers, please stop using NFS esp. for /usr/bin files,
	please give us some kind of cgi privileges, please disinfect the
	laboratories on occasion.

	2000	My first ebay activity.  I am also late to DSL because I
	have so many devices at home with modems.

	2001    With James Moscola, John Lockwood, and Michael Pachos, we
	are patenting FPgrep, FPsed, and FPawk.  We are way ahead on XML
	because of, you guessed it, AI and Law.

	2002	I am happy to help Sarah Burcham get what she needs
	to host the Fourth Yet Another Perl conference here at Wash U.

	2002	Boonyasuk Dheeravongkit does a semester project in
	Java, which I rewrite in one night.  From now on, I am at
	war with Java, and I openly challenge my colleagues to a
	programming contest, where I get to use gawk.

	2003    Are Fred Kuhns, Ken Wong, and I the only ones teaching any
	UNIX around here?  I am sneaking javascript and cgi into the
	webdev class.  I discover just how bad the MATLAB environment is.

	2004    David Butler and I are the only LAMP people in the dept,
	so we offer a server-side scripting course with asp, python, perl,
	php, and awk, resisting Ron Cytron's call for us to teach .NET.
	Charlie Comstock shows me ruby.  I start saying "Java is the worst
	curriculum mistake that CS has ever made" and "Java will not last
	another ten years as a dominant language."

	2004    My favorite new toys:  rugged laptops (they weigh less
	than your laptop plus carrying case).  But we could design a
	better water-resistant and shock-resistant laptop in one day.

	2005	Another year pushing cgi, LAMP, and gawk on Linux. 
	New buzzwords include agile programming and AJAX.  It seems I
	spent the whole year reporting to the government and buying
	Hardee's for my programming team so they don't balk at the
	high-stress requirements.  I tell them, "it's always better to
	have too much work than no work."