Software Engineering 3156TodayWhat Is Software Engineering?Some Software Has To WorkSome Software Needs Many ProgrammersConsider The Advanced EHF SatelliteUnfortunatelySituation Is GrimWhy Is Most Software So Bad?Don’t Forget Management IdiocyWhy Should You Take This Class?MarketableIt Can Be FunCourse OverviewDifferences From The UsualAdvanced ProgrammingDesign PatternsAbout MeMore MeCourse MechanicsCourse WebsiteLecturesOther SectionOther Section ContinuedTeaching AssistantsOffice HoursBooksBooks, cont.Grade breakdownHomeworksUsual Plagiarism Blah-BlahExamGroup ProjectProject BreakdownProject MilestonesBut, But, […] Happened, and…Group EvalGroupsThat’s ItSoftware Engineering 3156Fall 2001 Section 15-Sep-01Class #1: IntroPhil GrossTodayWhat and Why of SoftECourse MechanicsWhat Is Software Engineering?An attempt to apply engineering principles to the creation of softwareProduction of fault-free software, on time and under budget, that fulfills the users’ needs.Chemistry vs. Chemical EngineeringSome Software Has To WorkSafety/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 ProgrammersNo 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++ compilerConsider The Advanced EHF SatelliteBudgeted for billionsOnce it goes up, difficult to fix major bugsNeeds to work reliablyComplex communications protocolMany contractors working togetherhttp://www.spacedaily.com/news/milstar-00b.htmlUnfortunatelySoftware Engineering is an ambitious name (cf. Political Science)Think about Computer Engineering majorCompare to AISituation Is Grimhttp://www.space.com/businesstechnology/technology/ehf_satellite_delay_0102262.htmlRISKS Digest–http://catless.ncl.ac.uk/RisksTerrible engineering combined with widespread belief in computer infallibilityWhy Is Most Software So Bad?Minor consequences for failure–Reboot/reinstallProgrammer delusionBugs don’t appear until integration–Last step–Too lateKick 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 buildingsDilbertWhy 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 getBecome a better programmer–Thinking beyond the immediate algorithm or data structureMarketableReal companies use SoftE techniques–Or rapidly become ex-real-companiesAdvanced tool use and language topicsWhen you’re involved in a software fiasco (and you will be) gives you techniques for dodging blameThe move to managementIt Can Be FunTeam programming, when going well, is exhilaratingTeam programming, when going poorly, is like Survivor , only geekier–You get to take revenge on the slackersBut, can also be stressful, sleep-depriving–In the past, also unbelievably, hypnotically, unbearably dullCourse OverviewHow to successfully build commercial-scale softwareHow to program with a teamAdvanced programming skillsDifferences From The UsualFocus on process more than productLarge-scale techniques used on medium-small projectThe instructors–Both have taken SoftE at ColumbiaAdvanced ProgrammingNetworking–Sockets, Event ModelsConcurrency–Threads, IPC, SynchronizationLanguages–C/C++, Libraries, APIsUseful Stuff–XML, ToolsDesign PatternsSimilar high-level design problems occur repeatedlyGood solutions to these problems are recordedThis can save you a lot of timeStart off with flexible, extensible, scalable designs, rather than rearchitecting laterThe power of namingAbout MePhilip Nathaniel Gross, age 32–[email protected] Went to Cornell as a computer-programming English major, class of 1990Didn’t graduate, moved to HollandSeven years in the Netherlands as full-time computer professionalMore MeWorked for 9 months as maintainer of vast, poorly written, vertical application for the printing industryLast two years as third-line Digital Unix tech support for PTT Telecom (Dutch phone monopoly at the time)Back to USA and Columbia Jan 1998Ugrad (GS), Masters, and now PhD candidateCourse MechanicsPrerequisite–cs3137 or 3139, or equivalent–Proficiency in Java–See me if you don’t match thisThis is a Four credit course!–“Last of the weed-outs”–Due to registrar mix-up, recitation not formally required, but highly recommendedCourse Websitehttp://softe.cs.columbia.edu Syllabus and slides will be posted Questionnaire to be filled out by Monday’s classDiscussion forum–Access after questionnaire submission–Not the standard AcIS bboardLecturesScintillating, witty, fascinating, educational, entertaining, enlightening, erudite, and, of course, humbleYou’re responsible for knowing the content of the lectures (!= content of books)–If you can’t make it, get the info from someoneSleeping in class: I’ve done it too, to be sure, but isn’t your bed much more comfortable?Other SectionTaught by Janak ParekhTR 5:40-6:55–Good for the really late sleepersVery closely synchronized with this sectionOther Section ContinuedTAs will be “pooled”Possible to have cross-section groupsExams will be differentTeaching AssistantsEach group will be assigned to one:–Suhit Gupta (head TA and recitation instructor), [email protected]–Daniel Medina (possibly 2nd recitation instructor), [email protected]–Bethe Gordon, [email protected]–Marek Marcinkiewicz, [email protected] –Shen Li, [email protected] HoursTuesday 2:30-4:30pm608 CEPSR, alias “SoftE Central”TA office hours TBDJanak is Wednesday 2-4pmBooksMythical Man-Month, Anniversary Edition, by Brooks–A classic, part of many SoftE classesUML Distilled, 2nd Ed., by Fowler–Succinct guide to the most-used
View Full Document