Computer Science Prof. Bill Pugh Dept. of Computer Science Developing software vs. programming • As we move forward, writing software is looking less and less like programming • In some ways, harder – need to understand how to build secure, concurrent, distributed systems that scale to millions of users and tolerate failure • In others, easier – http://appinventor.googlelabs.com/about/ What is computer science? • Only kind of a science, only partially about computers (or programming) • A combination of math, engineering, art, architecture, science and philosophy • Understanding and solving problems in an abstract world, and connecting that to real world needs Be a rock star • In computing, an individual or small team can develop a vision, prototype it, refine it, get feedback on it, and get it into the hands of hundreds, thousands or millions of people – Even in corporations and large software projects, individuals or small teams have their responsibilities, and can see their vision become reality • Perhaps, one of the fields where this is easiest Computing is everywhere • We're all aware of the huge role of gadgets and the Internet in our lives • But what about other fields? – – – – – – – – aerospace engineering finance biology and genetics defense movie making medicine physics Large Hadron Collider • CERN launched the largest computing grid in the world which is destined to analyze the data coming from world’s biggest particle accelerator, the Large Hadron Collider (LHC). The computing grid consists of more than 140 computers centers from around the world in order to be capable to analyze 15 million GB of LHC’s data annually (40 thousand GB per day) Need Computational Thinkers • The world needs people who can take problems and systems, figure out how to think about and model them abstractly, figure out how to make them happen and improve them – Can do back of the envelop designs and calculations, work with people implementing those designs • MythBusters is great training! Sound scary? • It isn't. • Just means we need problem solvers who can think in abstract terms – break problems down into chunks that can be automated • Not so much of a need for learning all the details of how to code it up in the programming language of the week We don't need coding? • Well, actually, we do need people who can transform those abstract ideas into computer code – It is a very promising and interesting career path • But the language of the week/year/decade changes all the time – whatever language you learn, your dream job may require another language • And we also need a lot of people can think about breaking problems down into computation steps – even if they don't write the code themselves Undergraduate computer science • Math and logic – discrete math, logic, probability, recursion, proofs, induction, sets, graphs, trees, lists, algorithms, computational complexity • Programming and software development – programming languages, how to design a solution to a problem, how to gain confidence in the correctness of your software, how to design software so it can be extended and understood by others Topics • Theory – advanced algorithms and proofs, fundamental questions about which problems are hard and which are unsolvable, cryptology • Artificial intelligence – machine learning, natural language translation, planning, vision and speech recognition Topics • Databases – how to efficiently and securely store and access data • Systems – computer infrastructure: operating systems, networks, chips, supercomputers, security – all the stuff that tries to stay out of your way Topics • Software – Making it easier for people to write correct and fast software • Human computer interactions – Understanding how to design, evaluate and improve a user interface • Software engineering – Managing and getting the requirements right for large software projects Topics • Scientific computing – Figuring out the fastest and most accurate way to perform scientific simulations and calculations • Geometric and visual computing – route planning, computer graphics • Bioinformatics – – – – gene sequencing protein structures finding genes linked to diseases Health records • finding important/helpful patterns • security and privacy Example • Consider the problem of computing three dimensional partial differential equations – don't need to know what those are – but they come up in simulating oil wells, nuclear reactions and airfoils • Over 40 years, – hardware alone got 500,000 times faster – software alone got 250,000 faster » combined: 125 billion times faster » computation that used to take centuries now can be done in a second DARPA Urban Challenge • This event required teams to build an autonomous vehicle capable of driving in traffic, performing complex maneuvers such as merging, passing, parking and negotiating intersections. This event was truly groundbreaking as the first time autonomous vehicles have interacted with both manned and unmanned vehicle traffic in an urban environment. – http://www.youtube.com/watch?v=iCTlEHXiidM