Welcome to the Computer and Information Technology programWho am I?Who are you?What is this course?Why are you here?What are you getting yourself into?Programming can be funComputer ScienceCIT 591 is a programming courseBeauty in computer scienceBasic estheticsEleganceElegance in mathematicsBeauty in programmingElegance in programmingElegance, againWhat CIT 591 and 594 are aboutOut with the old, in with the newChanges in computer scienceWhat’s ahead?Maybe you should learn accounting instead?But more importantly...A little problemAnswer to the cards problemSmall projectsMedium-sized projectsLarge projectsWhat does that mean for CS?Why am I here?Academia vs. industryThe RulesGroup assignmentsHow to get a good grade in hereThe EndJan 14, 2019Welcome to the Computer and Information Technology programhttp://www.cis.upenn .edu/~matuszekWho am I?David Matuszek (muh-TOOZ-ik)I prefer “Dave,” or maybe “Dr. Dave”I’m the director of the MCIT programI’m here to teach, not to do researchMy most important courses are CIT 591 and CIT 594Who are you?Most of you are in the new MCIT program. You are here because:You are extremely brightYou do not have a BA or BS in computer scienceA few of you are in BioinformaticsThe rest of you are in other programsYou have a very wide range of backgroundsWhat is this course?This is a beginning programming courseThe language we are using is Java 2The primary audience is MCIT studentsThis is the first of six required MCIT coursesIt is also a service course for other students who need to learn to programCIT 591 replaces CIS 500 in this roleIf I can lure you into computing, I will!Why are you here?There are two good reasons for getting into computer science:The job market is (usually) very goodComputer programming can be extremely satisfying and enjoyableWhich of these is more important?Money is a necessityBeing rich isn’t a necessity (but it sure is nice)You spend about 1/4 of your adult life workingIt’s important to find work that you enjoyWhat are you getting yourself into?Programming is intellectually challengingIt can be tremendous fun……if you like that sort of thing!Lifelong learning is essentialThe technology is constantly changingWe cannot teach you all you need to knowWe can point you in the right direction and give you a good, hard push--but the rest is up to you!Programming can be funProgramming is puzzle-solvingVery little is mechanical, routine workYou always have to be thinkingIf you like solving puzzles, there’s a good chance you will like programmingSome puzzles are hardYou need a tolerance for frustrationSolving hard puzzles can be very satisfyingComputer ScienceComputer science is the study ofwhat we can do with computers how we can best do itIf we really understand how to do something, we can write a program to do itWe do a lot of things without really understanding how we do themComputer science is all about how to do thingsCIT 591 is a programming courseProgramming is teaching the computer how to do somethingProgramming, like woodworking, is a craftTo master a craft, you need both knowledge and experienceEven a poor woodworker can produce a useable chairA master craftsman can produce a chair that is strong, comfortable, and beautifulBeauty in computer sciencePrograms can be beautiful or uglyI am not speaking metaphoricallyUsually,Blind people can’t appreciate fine paintingsDeaf people can’t appreciate good musicNon-mathematicians can’t appreciate elegant proofsNon-programmers can’t appreciate the beauty in programs (but can often feel the lack of it!)Basic estheticsPeople have different tastes in music, but…A two-year old pounding on a piano is not making musicVery few musicians disagree on what notes make up a “chord,” or a “chord progression”People have different tastes in programming, but many values are held in commonProgramming is an art as well as a craftElegancePowerful software can do everything you want to do--for example, Microsoft WordComplex software is hard to learn and hard to use--for example, Microsoft WordMore power usually means more complexityElegant software somehow manages to be both simple and powerfulElegance in mathematicsIn school, the mathematician Johann Carl Friedrich Gauss was told to add up the numbers from 1 to 100Gauss realized that 1 + 100 = 101,2 + 99 = 101, 3 + 98 = 101, and so onThere are fifty such pairsThe answer must be 50 x 101, or 5050This is elegant: it saves work, and it’s easy to understandBeauty in programmingOuter beauty in programs consists of:Doing a job the way the user wants it doneProviding a simple, intuitive set of controlsWorking reliably, without crashes or glitchesInner beauty in programs consists of:Simple, elegant, efficient solutions to problemsCode that is easy to read, understand, and modifyGood commenting and coding styleElegance in programmingConsider the following problem:You are given a stack of cards, allegedly containing the numbers 1 through 100...…but there are only 99 cardsHow do you determine which card is missing?One solution:Go through all the cards looking for 1, then do it again looking for 2, etc.Is there a better way?Elegance, againSuppose you are given a deck of 51 playing cardsHow do you decide which card is missing?Can you adapt Gauss’s solution to this problem?Suppose you are given one thousand decks, each missing one (not all the same) cardFor each deck, you want to find which card is missingWould the large number of decks change the way you solve the problem?What CIT 591 and 594 are aboutYou need to learn the craft of programmingHow to design and write programs that workHow to write clear code and documentationThis is a skill, and it requires a lot of practiceIn CIT 591 we study programmingYou learn a language (Java 2) and some basic skillsYou learn how to use the language to tell the computer how to do things In CIT 594 we concentrate more on computer scienceRemember what I said: If you really understand how to do something, you can write a program to do itComputer science is all about how to do thingsOut with the old, in with the newGeometry is about 2300 years oldIt’s all based on straight lines and
View Full Document