CSC153.01 2003F, Class 1: Introduction Admin: * I'm Sam, who are you? (Attendance) * About this "eBoard" * http://www.cs.grinnell.edu/~rebelsky/Courses/CS153/2004S/ Homework: * Fill in introductory survey (to be distributed via email) * Scan the course Web. * Read "Beginning Scheme" Overview: * What is computer science? * About this course * Language paradigms * Administrative issues * If there's time: A quick intro to working in the MathLAN What is Computer Science? * An approach to using computers that emphasizes using languages to write programs * But perhaps it's broader than just writing programs ... * You might even deal with the mathematical aspect or the electronic/physics aspect * The application of logic to solving a particular problem, perhaps using computers Computer scientists often say that CS is the study of "Algorithms and Data" * Algorithms are (patterns of) instructions for solving problems * The term "Algorithm" is based on "Al kyorizma" (Sam mangles his arabic), who wrote one of the first known treatises on Mathematics * Data are ... Humans study things in many different ways * As scientists: Empirically using "the scientific method" which is based on hypothesis and observation (or vice versa) * As mathematicians: Quantitatively (Erik doesn't think so); Deductively (the solutions are determined by already established laws that are then used to determine other solutions); Analytically (working from known conditions); Logically/Formally * Mathematicians focus on proving "facts" using established "laws" * As engineers: Apply these theories to "useful" things; Focus on building things (using principles derived in many ways) * As humanists (As artists, As scholars of language, As studiers of religion, As musicians, As philosophers): Low-level courses are based on mastering a body of knowledge: We don't know, we're a bunch of science geeks * As social scientists: Based on observation (like scientists), but the systems are too complex, so it may not be as easy to reduce them to a few variables. Your conclusions are therefore more general. * ... Computer scientists try to use many of these approaches as they study computation and algorithms * We apply the scientific method: Some things we build are so complex that we can't understand them formally (e.g., the Internet); Sometimes we want empirical evidence to support our theories. * We make theorems and attempt to prove them. The most common theorems are those about algorithms or programs, such as about the running time (this algorithm, on input of size N, will take f(N) steps to compute an answer); correctness. Some computer scientists prove even more general theorems, such as Godel's incompleteness theorem * We build things (particularly programs, but also hardware and other such stuff) * We consider the impact of what we do upon society (or at least one hopes that we do) CSC153 is our accellerated introduction to Computer Science * CSC151+CSC152 = CSC153 * Three "paradigms" of computation * "Functional": Algorithms are simply collections of functions. * "Object oriented": Algorithms are collections of "objects"; "Objects" are groups of data and capabilities * "Imperative": Algorithms are collections of imperative statements * Seven weeks of functional programming in Scheme * Seven weeks of object-oriented programming in Java * (Fourteen weeks of imperative programming in Scheme and Java) * Weeks one through seven are "workshop style" * Weeks eight through fourteen are in various styles * No textbook (other than the Web site) Administrative issues