CSC151 2007S, Class 52: What is Computer Science? Revisited Admin: * Exam 3 due. * CONGRATULATIONS VIDA! * Plan for this week: * Today we return to the question of What is CS? * Tomorrow we look at Exam 2. * Wednesday you evaluate the course. * Friday we debrief on the class, review for the final, and eat. * Donuts, Fruit, AJ, Maybe coffee * 3 a.m. Pancakes are a bad idea. * I expect to provide tentative grades on Friday. Overview: * What is CS? * Subfields of CS. * Related Disciplines. What is CS? * The study of algorithms and data structures * Which means: * Instructions for solving a problem * Data structures are ways to represent data * Aka: CS is the study of how to represent and process information [Sam doesn't like that as much, even though he just wrote it] * "Study" is a vague word - What, not how * Lots of ways to study, which we'll talk about in a minute Detour: The SIGCSE Listserve discusses "what is CS"? * ABET no longer requires Calculus * ABET traditionally accredits engineering programs * Is CS Engineering? Has some parts * Applies Science and Math tools to real-world problems * Is CS Science? Has some parts * A way of studying the world using the Scientific Method * Algorithm design: Hypothesis: "This algorithm is correct" Gather data: "Try it" * Algorithm analysis Hypothesis: "This algorithm is faster than this one" Gather data * HCI Hypothesis: "This design will make a cmoputer less hard to use" * Is CS Math? Has some parts * We use a lot of Math (sorry) * Proof! * IS CS Social Science? Has some parts * We *SHOULD* consider the impact of what we do * CS IS INTERDISCIPLINARY! What are some ways that computer scientists study algorithms and data? * Sometimes involves applying to a particular problem space * Bioinformatics * Often involves more general approach * Whirlwind tour of the subfields of CS that we sometimes teach at Grinnell * Representing algorithms and data at the level that computers can (really) understand them * Computer Architecture and Organization * Taught in CSC 211; Physics folk (Florpers) teach related issues in Electronics * Developing algorithms and data structures to support people working on computers: Operating Systems * Filesystems: How do you store data for easy/quick/protected access? * Process management: How do you let multiple things happen at the same time, and keep it all straight, and keep everything working? * Famous problem: Dining Computer Scientists * CSC 213 * Developing algorithms and data structuers to support information transmission: Networking CSC 364 * How do I figure out where to send things, given that I don't know where most things are on the Internet? * Rely on an "authority" * How do I know that my data got to where it's going, and safely? * How do we make sure that people cooperate? * How do we really design algorithms? How can we be sure that they are correct? How do we know their running time? (Proof, not just scientific method.) Are there algorithms we can't design efficiently? What do we do when we can't design an inefficient algorithm. * CSC 301 * Are there problems for which there are no algorithms? * Yes! It is impossible to write aprogram which looks at an arbitrary other program (anjd input) and determines whether it stops!