400 likes | 586 Views
Software Engineering 3156. Fall 2001 Section 1 5-Sep-01 Class #1: Intro Phil Gross. Today. What and Why of SoftE Course Mechanics. What Is Software Engineering?. An attempt to apply engineering principles to the creation of software
E N D
Software Engineering 3156 Fall 2001 Section 1 5-Sep-01 Class #1: Intro Phil Gross
Today • What and Why of SoftE • Course Mechanics
What Is Software Engineering? • An attempt to apply engineering principles to the creation of software • Production of fault-free software, on time and under budget, that fulfills the users’ needs. • Chemistry vs. Chemical Engineering
Some Software Has To Work • Safety/Control • “Please wait while we reboot the nuclear power plant” • Military • “Oops, my gun crashed” • Embedded • “The microwave seems to be locked on ‘high’” • Etc. • “If your pacemaker freezes, find the little ctrl-alt-del buttons”
Some Software Needs Many Programmers • No matter how bright you are, you will have a hard time “hacking together” • The airline reservation system • The Microsoft Office suite • Control software for an aircraft carrier • A fully compliant C++ compiler
Consider The Advanced EHF Satellite • Budgeted for billions • Once it goes up, difficult to fix major bugs • Needs to work reliably • Complex communications protocol • Many contractors working together • http://www.spacedaily.com/news/milstar-00b.html
Unfortunately • Software Engineering is an ambitious name (cf. Political Science) • Think about Computer Engineering major • Compare to AI
Situation Is Grim • http://www.space.com/businesstechnology/technology/ehf_satellite_delay_0102262.html • RISKS Digest • http://catless.ncl.ac.uk/Risks • Terrible engineering combined with widespread belief in computer infallibility
Why Is Most Software So Bad? • Minor consequences for failure • Reboot/reinstall • Programmer delusion • Bugs don’t appear until integration • Last step • Too late • Kick a bridge and it still stands. But flip a bit…
Don’t Forget Management Idiocy • “You’re behind; I’m assigning 75 novice programmers to the project to help speed you up.” • “Take this ancient software and make it…” • “Multi-user and Fault-tolerant” • “Work on this new system” • Cf. collapsing buildings • Dilbert
Why Should You Take This Class? • Arguably one of the most useful classes • Chemical Engineering and Applied Physics are entire departments • This is all you’re going to get • Become a better programmer • Thinking beyond the immediate algorithm or data structure
Marketable • Real companies use SoftE techniques • Or rapidly become ex-real-companies • Advanced tool use and language topics • When you’re involved in a software fiasco (and you will be) gives you techniques for dodging blame • The move to management
It Can Be Fun • Team programming, when going well, is exhilarating • Team programming, when going poorly, is like Survivor, only geekier • You get to take revenge on the slackers • But, can also be stressful, sleep-depriving • In the past, also unbelievably, hypnotically, unbearably dull
Course Overview • How to successfully build commercial-scale software • How to program with a team • Advanced programming skills
Differences From The Usual • Focus on process more than product • Large-scale techniques used on medium-small project • The instructors • Both have taken SoftE at Columbia
Advanced Programming • Networking • Sockets, Event Models • Concurrency • Threads, IPC, Synchronization • Languages • C/C++, Libraries, APIs • Useful Stuff • XML, Tools
Design Patterns • Similar high-level design problems occur repeatedly • Good solutions to these problems are recorded • This can save you a lot of time • Start off with flexible, extensible, scalable designs, rather than rearchitecting later • The power of naming
About Me • Philip Nathaniel Gross, age 32 • phil@cs.columbia.edu • Went to Cornell as a computer-programming English major, class of 1990 • Didn’t graduate, moved to Holland • Seven years in the Netherlands as full-time computer professional
More Me • Worked for 9 months as maintainer of vast, poorly written, vertical application for the printing industry • Last two years as third-line Digital Unix tech support for PTT Telecom (Dutch phone monopoly at the time) • Back to USA and Columbia Jan 1998 • Ugrad (GS), Masters, and now PhD candidate
Course Mechanics • Prerequisite • cs3137 or 3139, or equivalent • Proficiency in Java • See me if you don’t match this • This is a Four credit course! • “Last of the weed-outs” • Due to registrar mix-up, recitation not formally required, but highly recommended
Course Website • http://softe.cs.columbia.edu • Syllabus and slides will be posted • Questionnaire to be filled out by Monday’s class • Discussion forum • Access after questionnaire submission • Not the standard AcIS bboard
Lectures • Scintillating, witty, fascinating, educational, entertaining, enlightening, erudite, and, of course, humble • You’re responsible for knowing the content of the lectures (!= content of books) • If you can’t make it, get the info from someone • Sleeping in class: I’ve done it too, to be sure, but isn’t your bed much more comfortable?
Other Section • Taught by Janak Parekh • TR 5:40-6:55 • Good for the really late sleepers • Very closely synchronized with this section
Other Section Continued • TAs will be “pooled” • Possible to have cross-section groups • Exams will be different
Teaching Assistants • Each group will be assigned to one: • Suhit Gupta (head TA and recitation instructor), suhit@cs.columbia.edu • Daniel Medina (possibly 2nd recitation instructor), medina@cs.columbia.edu • Bethe Gordon, bg171@columbia.edu • Marek Marcinkiewicz, mom7@columbia.edu • Shen Li, sl697@columbia.edu
Office Hours • Tuesday 2:30-4:30pm • 608 CEPSR, alias “SoftE Central” • TA office hours TBD • Janak is Wednesday 2-4pm
Books • Mythical Man-Month, Anniversary Edition, by Brooks • A classic, part of many SoftE classes • UML Distilled, 2nd Ed., by Fowler • Succinct guide to the most-used design representation • Object-Oriented and Classical Software Engineering, 5th Ed., by Schach • Best we could find, costs a fortune
Books, cont. • All are available at Papyrus • 114th and Broadway, downstairs • Might be cheaper on-line
Grade breakdown Homeworks: 100 points Exam: 100 Group project: 400 Group eval: 75 Total: 675 Extra credit: 25
Homeworks • Four of them • Based on the books • Straightforward • Late Policy • Three late days to use at your discretion • Except for last homework (#4) • Notify your TA • Homework never accepted after solutions have been presented
Usual Plagiarism Blah-Blah • I really will report plagiarism • Don’t believe me? Then try it. I’m sure your parents will be just as impressed as the Dean with your investigatory zeal. • Think: • the person who’s stupid enough to let you copy from them is probably not the best person to copy from • The person who’s so stupid they need to copy from you is probably not smart enough to disguise it well • For the record, I have no problem giving Fs, either
Exam • Schedule still in flux • Covers homeworks
Group Project • MMORPG • Microscopically Multiplayer On-line Role Playing Game • Clients, Servers, Actors, Service locators
Project Breakdown • Specification 100 points • Design 100 • Implementation 100 • Code Review 50 • Demo 50
Project Milestones • No late days! • Turn in whatever you have when it’s due • Make sure you have something, anything, ready a few days early, just in case
But, But, […] Happened, and… • Group crisis? Unexpected complications? Vanishing team members? • Happens every semester • Will happen to your group • Plan defensively • Some folks have very late drop dates
Group Eval • 75 points of your grade will be determined by the other members of your group • You can slack, but you can’t hide • Work within the group is generally zero-sum • It’s a lot easier to bamboozle your professors than your fellow students
Groups • Approximately five • You can propose a group, or just let us pick • For the project only, not for the homeworks • We’ll be setting them up next week
That’s It • I hope you enjoy the course • I’m looking forward to it