Can Computers Think?
Introduction to Computer Science

CSC 106
Union College
Winter 2010

Instructor:

Kristina Striegnitz
email: striegnk@union.edu
office phone: [518 388] 6554
office: Steinmetz 233
office hours: Tuesdays 2:30-4, Thursdays 9-10:30, by appointment, and whenever my door is open

Time and place:

MWF 9:15-10:20 in Olin 102
Th 10:55-12:40 in Olin 102

Course Description

Can computers think? Is it possible to build intelligent machines? What does it mean for a machine to think or to be intelligent? Why would we want intelligent machines? Or why maybe not? To what extent do we already have intelligent machines? How do they work?

These are the kinds of questions that this course invites you to explore. You will do so by reading philosophical, technical papers and fiction about artificial intelligence, by participating in thought experiments and debates in class, and by learning about current research in artificial intelligence. Most importantly, you will learn about and do your own computer programming in order to give you a better understanding of how the current technology for building intelligent machines works.

Learning Method

Learning how to program requires you to actually do it and practice it. I will provide lots of opportunities for you to practice and get feedback both in class and as homework assignments.

The classes will, therefore, be a mixture of lecture, discussion and hands-on exercises, and it is extremely important that you attend class and participate actively. I will try to make class time valuable. If you do not find class valuable, please let me know (rather than just skipping class or being silently frustrated). Any unexcused absence after the second absence will reduce your final grade 1/3 letter grade (for example, from a B to a B-, or from an A- to a B+) for every class that you miss.

I will give you small exercises to do in between one class and the next (for almost all classes). Sometimes these assignments will allow you to reinforce something you have worked on in class; sometimes they will be a preparation for the next class. They will involve various activities: reading, writing and programming. Please, bring a print-out of your answer, which you can hand in, to class. (Unless I assigned CodeLab exercises; in that case you don't need to hand anything in. You will hear more about CodeLab exercises in class).

Being able to discuss new concepts and ideas with other people often helps to learn. I, therefore, encourage you to work in study groups and to collaborate on the homework exercises. However, you should make sure that you really benefit from the collaboration. That means, you should make sure that all members of the group contribute and that everybody knows what going on at all times.

In introductory computer science classes one class builds on the next. We start with simple things and build on them and combine them to more and more complex ideas. It is, therefore, important that you don't fall behind. Participating in class and doing the homework exercises will help you ensure that you don't fall behind. In addition, if you feel at any point that something is not quite clear to you, please come to see me so that we can clarify that issue before we get to something more complex that builds on it.

You will also get four larger programming assignments ("programming projects") that will allow you to practice previously covered material in a slightly larger context. On these programming projects you should work either alone or with one partner. If you choose to work with a partner, you should let me know at least four days before each project is due. You can also not work on more than two projects with the same partner.

And finally, we will have in-class discussions, one more formal debate and one round of presentations on topics of artificial intelligence and computing in general. More information on these discussions and presentations will follow in class.

Evaluation

The final grade will assess your ability to take a problem, devise a strategy for solving it, and to formulate this strategy in a programming language (Python) using good style. It will also assess your ability to critically analyze existing software (How does it work? Is it intelligent? What societal impact does it have?) using the concepts discussed in this course. To evaluate your progress in reaching these goals (and to provide you with feedback on your learning) I will look at the following items:

Special Arrangements

If you need special accomodations because of a disability or other reasons, please come to see me as soon as possible so that we can find a solution. You may have to get proper documentation from the Dean of Student' office. All such discussions will, of course, remain confidential.