22C:016 Computer Science I: Fundamentals
Spring 2011

9:30-10:20 MWF Room W151 PBB (John Papajohn Business Building)


Instructor: Sriram V. Pemmaraju
101G MLH, sriram-pemmaraju@uiowa.edu, 319-353-2956
Office Hours: 10:30-11:30 M, 2:30-3:30 W, 2:30-3:30 W and by appointment
Course website: http://www.cs.uiowa.edu/~sriram/16/spring11/
Department website: http://www.cs.uiowa.edu/

Computer Science I: Fundamentals is the first course in the computer science major sequence. It aims to introduce students to computational thinking by focusing on the design and implementation of computer programs to solve problems. Given how pervasive computing has become, this course is also useful to other majors as an initial exposure to programming. Lectures are three times per week, with an additional discussion section once per week. The key programming topics include variables, data types, functions, objects and classes. Throughout the course, we will emphasize the design of efficient algorithms and their translation into robust computer programs. The course will exclusively use Python as the programming language. Python can be used interactively and can be accessed on Linux/Unix, Mac, and Windows platforms.

Prerequisite
Students are not required to have previous computer programming experience, but basic knowledge of how to use a computer (simple word processing, using a web browser) is assumed; students should have competency with basic arithmetic and algebra (formally, this means 22M:005 or MPT II score of 20 or above or MPT III score of 10 or above).

Textbook
There is no required textbook for this course. An outline of my lecture notes will be published via the course web site. There are a number of excellent resources for Python and free Python textbooks that are available online. Links to these will be posted on the course page.

Tentative List of Topics
The course is broken up into three parts, each part will take roughly 5 weeks. If all goes well, each part will end with an exam.

We will also study miscellaneous (but popular) topics such as (i) graphics programming in Python and (ii) network programming in Python.

Teaching Assistants
The course has 3 teaching assistants (TAs), who are Ph.D. students in the computer science department. Each of them will lead two discussion sections each. These meet on Tuesdays according to the schedule provided below.

You should think of the TAs as the front-line for getting help in this course. Together they will have 9 office hours per week, spread through the week and will also answer questions by e-mail and on the phone. Contact information and office hours for the TAs will be posted shortly on the course webpage. The discussion sections will complement the lectures in a variety of ways and will provide opportunity to deepen your understanding of the material covered in the lectures. The discussion sections will provide plenty of coding examples that could not be covered in the lectures and will provide specific guidance on homeworks and programming projects. Due to their small size, the discussion sections will provide an environment in which it is easier to ask questions and have interactive discussions.

Grading
Plus/Minus grading will be used for the course. There are the four components that will determine your grade.

Late submissions will not be accepted and in general you will be better off turning in what you have on time rather than seeking extra time to complete your work. Starting early is the key, and the TAs and I will be glad to help with any questions you may have on the assignments. So please visit us often during our office hours and if necessary, outside our office hours as well. There will be no make-up exams in general and exceptions will be provided only for students whose reasons are included in the University's policy on "Excused Absences from Examinations". Excused absence forms are available at the Registrar's website. Recently, the Student Health Services changed the policy on class excuses, please read here.

Homeworks and programming projects will have to submitted via ICON's dropbox feature. Grades will also be published on ICON. Solutions will be provided on the course page for all the homeworks. I will not be marking attendance, however over the years I have noticed a strong correlation between attendance and performance in the course.

Communicating with me
Asking me questions by e-mail is quite appropriate and I will try to answer any e-mails related to 22C:16 within 12 hours of e-mail receipt. You should make sure to include 22C:16 in the subject line to help me get to your e-mail quickly. I will occasionally send e-mail announcement to all students in the class and you are responsible for all official correspondence sent to the UI address (@uiowa.edu). Make sure that you check this e-mail account regularly. I would also prefer receiving e-mails from your uiowa account, rather than from commercial e-mail providers (e.g., gmail or yahoo!). I will try to call you by your preferred name. As a matter of professionalism, I'd prefer you call me "Prof. Pemmaraju" or "Dr. Pemmaraju". I will insist that we all start our e-mails with the recipient's name (not "Hey" or just blank) and end our e-mails with the sender's name.

Effort Level
Successful completion of this course will provide a sound foundation for the rest of the computer science major and can eventually lead to a satisfying career in computing. However, success in this course will only come about as a result of a great deal of consistent focus and effort. According to University guidelines, a student should expect to work for 2 hours per week (outside the classroom) for each course credit. This is a 4 credit course and you will spend about 8 hours per week reading lecture notes, solving homeworks, completing programming projects, preparing for quizzes, etc.

Course Accounts
You will need CS course accounts to do and submit your work for the course. Some of you may already have such accounts; the rest of you will get CS accounts by the end of the first week. You will also need a HawkID and a password to login to ICON to electronically submit your assigned work.

Course Home
This course is run by the Computer Science department which is part of the College of Liberal Arts and Sciences. This means that class policies on matters such as requirements, grading, and sanctions for academic dishonesty are governed by the College of Liberal Arts and Sciences. Students wishing to add or drop this course after the official deadline must receive the approval of the Dean of the College of Liberal Arts and Sciences. Details of the University policy of cross enrollments may be found online here.

Students with disabilities
I would like to hear from anyone who has a disability which may require seating modifications or testing accommodations or accommodations of other class requirements, so that appropriate arrangements may be made. Please contact me during my office hours.

Academic Dishonesty
Academic dishonesty will not be tolerated. Under no circumstances should you pass off someone the work of someone else as your own. This also applies to code or other material that you might find on the internet. Note that we will routinely use available software systems for detecting software plagiarism, to test any suspicions we might have. If you are unclear about what constitutes academic dishonesty contact your professor or consult the policy in the CLAS Bulletin (online version). We do want students to talk to each other about concepts and ideas that relate to the class. However, it is important to ensure that these discussions do not lead to the actual exchange of written material.

Student Complaints
If you have any complaints or concerns about how the course is being conducted by me or by the TAs please feel free to talk to me. You are also welcome to get in touch the the Computer Science department chair, Prof. Alberto Segre (alberto-segre@uiowa.edu, 319-335-1713, 14D McLean Hall). Consult the college policy on Student Complaints Concerning Faculty Actions (online version) for more information.

Classroom Etiquette
Showing up to class late, leaving your cell phone ringer on, etc. can be quite distracting to the instructor and fellow students. If you are in class, it is your responsibility to pay attention and to make sure that you are not doing anything that makes it harder for fellow-students to pay attention. When disruptive activity occurs, a University instructor has the authority to determine classroom seating patterns and to request that a student exit immediately for the remainder of the period. One-day suspensions are reported to appropriate departmental, collegiate, and Student Services personnel (Office of the Vice President for Student Services and Dean of Students).

University Statement on Sexual Harassment
Sexual harassment subverts the mission of the University and threatens the well-being of students, faculty, and staff. All members of the UI community have a responsibility to uphold this mission and to contribute to a safe environment that enhances learning. Incidents of sexual harassment should be reported immediately. See the UI Comprehensive Guide on Sexual Harassment for assistance, definitions, and the full University policy.

Reacting Safely to Severe Weather
In severe weather, class members should seek appropriate shelter immediately, leaving the classroom if necessary. The class will continue if possible when the event is over. For more information on Hawk Alert and the siren warning system, visit the Public Safety web site.