| Introductory comments and boilerplate |
| Harvey Mudd College CS 60 Principles of Computer Science Fall 2002 Bob Keller, Professor keller@cs.hmc.edu 621-8483 |
| Web Page: www.cs.hmc.edu/courses/current/cs60 |
| My Office Hours (1249 Olin): |
| Note: 1249 is in the southwest corner of Olin | ||
| Tuesday and Thursday, 1-3, and others | ||
| By drop-in (frequently available) | ||
| Look for ÒINÓ vs. ÒOUTÓ letters | ||
| By appointment: | ||
| email keller@cs.hmc.edu | ||
| phone 621-8483 | ||
| Crisis center: 621-2373 | ||
| Text |
| Computer Science: Abstraction to Implementation (aka ÒComputer Science for Smart PeopleÓ*) by Robert M. Keller | ||
| Available from CS Department office, three options: | ||
| $30 for the 2001 edition (recommended) | ||
| $15 for the 1999 edition (a few copies left) | ||
| web addition: http://www.cs.hmc.edu/~keller/cs60book Do not print major portions of book on HMC printers. |
||
| Reading Assignment: | ||
| Chapters 1 and 2 | ||
| *Boycott demeaning books! |
| Auxiliary Text |
| Some kind of Java reference, e.g. what you used in CS 5 or equivalent. Or check any bookstore for something that looks appealing. | |
| WonÕt need Java for a couple of weeks. |
| Help with Computer Account |
| You will be given an account on turing.cs.hmc.edu. | |||
| For problems with your account, you will need to contact either: | |||
| our system administrator, | |||
| Andrew McDonnell (amcdonne@cs.hmc.edu). | |||
| or one of our staff members: | |||
| staffnow@cs.hmc.edu | |||
| I (Bob Keller) donÕt have the privileges necessary to set your password, quota, etc. | |||
| How/Where to Login |
| Room B102 is best (out the front lecture room door, up the stairs to the right, first door on the left) | ||
| Remote is possible, however: | ||
| Must use secure ssh client, not telnet | ||
| For further information please see: | ||
| http://www.cs.hmc.edu/tech_docs/qref/ssh.html | ||
| This will tell you how to get free client for your machine. | ||
| Strong Recommendation |
| As quickly as possible: | |||
| Learn your way around UNIX | |||
| Learn to use Emacs (text editor) | |||
| Emacs is a powerful tool. | |||
| Using it can have life-long benefits. | |||
| Definition of Computer Science (CS) |
| Computer science involves synthesis and analysis of: | ||
| Algorithms | ||
| Information representations | ||
| Communication processes | ||
| Resource allocation methods | ||
| Languages for all of the above | ||
| Role of CS |
Computer science provides the logical infrastructure for the information-based society (ThatÕs us, folks!). |
| CS Characteristics and Contrasts |
| CS not a Òstudy of natureÓ as such | |
| We create what we study "The best way to predict the future is to invent it." Alan Kay |
|
| ÒAbstractionsÓ are often a product (e.g. Java awt: Abstract Window Toolkit) | |
| A Misconception |
| Computer Science is just the study of
computers Analog: Surgery is Òknife scienceÓ. |
|
| There is some of that, but CS is more generally about information and computation. |
| Misconceptions (continued) |
| Computer Science is just a ÒserviceÓ to
other fields, not a Òreal scienceÓ. Computer Science is an independent intellectual discipline that happens to enjoy applications to many other disciplines. |
| Slide 16 |
| Richard P. Feynman, physicist: |
| Computer science is not as old as physics; it lags by a couple of hundred years. However, this does not mean that there is significantly less on the computer scientist's plate that on the physicist's: younger it may be, but it has had a far more intense upbringing! |
| Broad Goals of CS 60 |
| Exposure to a variety of important areas of computer science | |
| Logical thinking and techniques | |
| Specification and problem solving | |
| Programming practice in a variety of paradigms | |
| Goals wrt Programming |
| Something about programming paradigms: | ||
| Functional programming | ||
| Object-oriented programming | ||
| Logic programming | ||
| Assembly-language programming | ||
| because these are important in thinking about software and hardware construction. | ||
| ÒA language that doesnÕt affect the way
you think about programming is not worth knowing.Ó Alan Perlis |
||
| What is a ÒparadigmÓ anyway? |
| an example serving as a model |
|
| a pattern | |
| (used to be) minimum to make a call from a phone booth :) |
|
| Slide 21 |
| Why we write programs: |
| to make a system or device that carries out some function | |
| to communicate with others | |
| to try ideas, to learn | |
| to convince ourselves that we understand (rather than just saying we do) | |
| Old Chinese Proverb |
| I hear, I forget. | |
| I see, I remember. | |
| I program, I understand. |
| My Best Advice |
| CS 60 assignments are not cook-book; they demand a certain level of intellectual engagement. Therefore: | |
| Starting thinking about an assignment as soon as it is given. | |
| Let your sub-conscious mental processes help solve problems. | |
| Allow yourself space to experiment. |
| Getting Help |
| I welcome you to come to my office for discussion of problems. | |
| The grutors will also be available for help. | |
| We (the grutors and I) want to receive your emailed questions: Mail to: cs60help@cs.hmc.edu | |
| Get help as soon as possible when you feel you are not making progress; donÕt waste hours not knowing what to do. | |
| There is no stigma attached to getting help or asking questions. It is intended that you will need to do so. |
| Submitting Assignments |
| You will be given an account on our
UNIX server turing.cs.hmc.edu |
|
| You can only submit homework from this
account using the program: cs60submit your-filename |
| CS 60 Home Page |
| http://cs.hmc.edu/courses/current/cs60 | |
| links to the syllabus and other good stuff | |
| will be updated constantly as we go |
| Chapter One |
| Gives an overview of the rest of the material | ||
| Talks about abstraction | ||
| It may take some time to appreciate
this; perhaps the whole semester, or more. |
||
| ÒTruth be told, all software
engineering is based on abstraction and abstract models. Abstract thinking is, developmentally speaking, a more advanced and sophisticated mode of thought that takes years for children to acquire. There are some adults who never learn to cut free of concrete literalism.Ó |
||
| Larry
Constantine Object Magazine, Dec. 1996 |
||
| Chapter Two |
| Talks about information structures: | ||
| an abstract view of data structures | ||
| can be programmed directly in our rex language | ||