CS30 - Administrivia
Handouts, announcements, etc.
All handouts will be distributed on the course web page. This will include lecture notes/slides, assignments and other handouts. You are responsible for all material and announcements posted on the class web page, so please check it regularly. If this is a problem for anyone, feel free to come talk to me. For time critical announcements, I will use e-mail.
Course Description
The purpose of the course is to introduce students to the basic principles of computation as they relate to cognitive science and related fields. Although the course is slanted toward the "cognitive," it serves as a general introduction to computation and computer science for students in all disciplines.
- There will be an introduction to programming, in which we will use the programming language Python. It is now one of the more common languages; is easy to learn, and is a good vehicle for teaching the fundamental principles of programming. The skills learned with Python will allow students to go on to write programs in other languages--whatever those languages may be. (No previous programming experience is assumed.)
- We will investigate models of computation by reading some of the fundamental papers in the area and using a program called JFLAP to simulate Turing machines.
- Toward the end of the course, we will look at some concrete applications of computation, including neural networks and some artificial intelligence programs.
Learning Goals
- Have a strong understanding of the historical context of how the study of cognition has influenced computation and computational models of cognition.
- Be able to discuss contemporary contributions in the intersection of cognitive and computer sciences.
- Be able to apply computational thinking, perhaps including programming, to a task in linguistics and cognitive science.
- Be able to design and implement a solution to a computational problem.
- Understand the basic models of computation and be able to create and simulate Turing Machines and Finite State Automata.
Coursework
- Grade calculation
- 40% Assignments and lab sessions
- 35% Midterm exams (2, 17.5% each)
- 20% Final exam
- 5% Participation
- Assignments -
We will have roughly weekly assignments. Many will consist of two parts, one due before lab and one part due later in the week. Many will be in Python, though we will also have a few other types of assignments.
- Exams -
We will have two in-class midterms with have been tentatively scheduled on the course web page. Among other topics, exams will involve writing code on paper, not at a computer. To prepare for this, I recommend practicing writing code on paper (or on the whiteboards in the lab) throughout the semester. The (cumulative) final examination is also scheduled on the course calander during our final exam timeslot.
- Participation - Class attendance is required. Participation consists of attending class and of giving evidence that you are actively engaged with the material (asking/answering questions in lecture, coming to office hours, etc).
Late policy
Except under extenuating circumstances or when otherwise specified, late assignments will not be accepted.
Academic Honesty and collaboration
I take academic honesty very seriously.
You are encouraged to get together in small groups to discuss material from the lectures and text. However, the work that you turn in must be done independently, unless an assignment is explicitly designated as one in which collaboration is allowed.
In particular, your work must not be based on information obtained from sources other than those approved for the course (i.e., the text, web pages linked from the course web page, and materials provided in lecture). You should never copy another students code or solutions, exchange computer files, or share your code or solutions with anyone else in the class until after an assignment is due. You may, however, use any code that we provide to you or that comes from the textbook, as long as you acknowledge the source. Additionally, the tutors are allowed to help you with your code.
If you are working with others on an assignment, I suggest the following procedure: spend as much time as you need working with others to understand the problems. When you're ready to start on your own take a break and then go back and write your programs without the notes you used while working with the others. This will help ensure that you follow both the letter and the spirit of the honor code.
If you are ever unsure about what constitutes acceptable collaboration, please ask!
For more information see the Computer Science Department's Academic Honesty Policy and the college's policy.
Computer and cell phone use during class
You may use your laptops/devices during lecture to take notes. Please resist the temptation to use your laptop/devices for other purposes (e-mail, IM, web browsing, games, texting, etc.).