Computer Science 101A:
Introduction to Computer Science

Spring 2011

Tuesday/Thursday, 10:00 am - 11:25 pm and Monday, 2:30-3:55 pm
Lab Days Will Vary!!
Searles 126 and 128 (mostly 128)

In this course you will learn how to design an algorithm to solve a problem, how to evaluate the efficiency of that algorithm, and how to write a program to implement that algorithm on a computer. This course will enhance your analytical and problem-solving skills and give you some powerful problem-solving techniques that can be used in areas besides computer science. We will focus on object-oriented programming using Java.


ADMINISTRATIVE INFORMATION:
Instructor: Stephen Majercik, 222 Searles, 725-3106, smajerci@bowdoin.edu
Office Hours: Mon, 1:30-2:30 pm; Tues, 4:00-5:00 pm; or by appointment; or just stop by!
Teaching Assistant: Dani McAvoy, Hours TBA, Searles 128, dmcavoy@bowdoin.edu
Mentor: Nathan Merritt: Hours TBA, Searles 128, gmerritt@bowdoin.edu
Class E-mail: csci101a@bowdoin.edu


TEXT (optional):
K. Bruce, A. Danyluk, and T. Murtagh, Java: An Eventful Approach,
Peasron/Prentice-Hall, 2006.


COURSE PREREQUISITES:
None (although I assume you are familiar with high school algebra)


COURSE REQUIREMENTS:
9 Labs 25%
3 Exams 75%
Class Participation Tiebreaker
 
LABS:

There will be 9 labs/assignments during the semester. Except for the first few, they are not designed to be completed during the lab. You can expect to spend an average of 5-10 hours of work on each lab (including the official lab time). Experience has shown me how difficult it is for students to catch up once they get behind, so all lab deadlines are hard deadlines. No extensions are possible unless you have an excuse from your Dean.


EXAMS:
There are three exams, each covering about a third of the material in the course. The third exam will be given during the final exam slot (12/18, 2:00pm). Although each exam will focus on the material covered during that third of the course, each exam will, of necessity, be moderately cumulative, due to the fact that the more difficult programming done later in the course will still require programming knowledge and techniques learned earlier in the course. If you cannot be present at an exam, you will need an excuse from your Dean.


ACADEMIC HONESTY:
You are expected to follow Bowdoin's Computer Use Policy and its Academic Honor Code. No collaboration whatsoever is permitted on exams. You may, however, discuss designated lab assignmentswith other class members. Ideally, these discussions should be limited to broad, conceptual questions, since labs are the primary means for you to learn the material, but you are also allowed to discuss more detailed questions regarding the design and implementation of your programs. I will elaborate on this in class. You are not allowed to share code under any circumstances. It is permitted, for example, for one student to ask another student how he/she did something or to ask for help with a debugging problem in his/her code; it is not permitted for a student to take another student's code or to let another student write code for him/her. Remember that providing help beyond what is allowed here is as much of an infraction as receiving help. Once you have finished the course, sharing your work with students taking the course is also a violation.

Any violation of this policy is grounds for me to initiate an action that would come before the Judicial Board. If you have any questions about this policy, PLEASE do not hesitate to ask me. This is a zero-tolerance policy.


























COURSE OUTLINE (subject to change):
Dates (L = lab) Topic Readings
Jan 24, 25, 27 Algorithmic Thinking Handouts
Jan 31, Feb 1, 3(L1) Graphics and Event Handling Chs 1, 2
Feb 7, 8, 10(L2) Variables and Numbers Chs 2, 3
Feb 14, 15, 17(L3) Conditionals Ch 4
Feb 21, 22, 24, 28(L4) Classes and Objects, Declarations and Scope Chs 6, 8
Mar 1, 3 Primitive Types and Strings Chs 5, 16
Mar 7 Review for Exam 1 Chs 1-4
Mar 8 Exam 1 Chs 1-4 
Mar 10(L5) Primitive Types and Strings Chs 5, 16
Mar 28, 29, 31(L6) While-Loops and Active Objects Chs 7, 9
Apr 4, 5, 7, 11(L7) Recursion Ch 12
Apr 12, 14 Binary Notation Handouts
Apr 18 Review for Exam 2 Chs 5-9, 16
Apr 19 Exam 2 Chs 5-9, 16
Apr 21, 25, 26(L8) 1-dimensional Arrays and For-Loops Chs 13, 14
Apr 28, May 2, 3(L9) 2-dimensional Arrays Ch 14
May 5, 9 Genetic Algorithms Handouts
May 10 Review for Exam 3 Chs 12-14, Handouts
May 20, 9:00 am Exam 3 Chs 12-14, Handouts