CS 170 Introduction to Computer Science I, Spring 2012, Section 002

Lecture: TuTh 1-2:15pm MSC W303
Lab: Tu 4-4:50pm MSC E308A (starting Jan 25)

Web: http://www.mathcs.emory.edu/~cs170002
Mailing Lists: cs170002-list@cs.emory.edu
Share Directory: /home/cs170002/share

Instructor: Shun Y. Cheung (cheung@cs.emory.edu)
Office Hours: TuTh 9:30--10am and 2:30-3:30pm at MSC W428 or by appointment.
You can often get your questions answered quicker by emailing them to me.
TA: Shuai Zheng (szheng5@emory.edu)
Office Hours: MF 9-11am at MSC N414 or by appointment

Overview

This course is an introduction to computer science for the student who expects to make serious use of the computer in course work or research. Topics include: fundamental computing concepts, general programming principles, the Unix Operating System, and the Java programming language. Emphasis will be on algorithm development with examples highlighting topics in data structures.

Textbook

No textbook required; the online lecture notes ( click here) are sufficient. For reference purpose, you can use: "Introduction to Java Programming", Brief Version, 7/E, Y. Daniel Liang, 2008 (you can get an older edition in Amazon)

Prerequisites

There are no prerequisites although some familiarity with email and web browsers will be helpful. We assume knowledge of high school algebra and basic problem solving skills. This course is the first of a two semester sequence for computer science majors and is followed by CS 171.

Labs

We have one hour of scheduled lab time per week but plan on spending considerably more time than that in front of a computer this semester (either in our lab or working from home) to work on your projects. In the weekly lab we will focus on learning tool skills and practice and reinforce concepts learned in lecture by writing small programs. You will generally receive full credit for turning in a functioning lab assignment. Most labs will be due in two days. Please make every effort to attend labs.

Attendance policy

Attendance to lectures is not required But it is highly recommended and encouraged When you miss a lecture, you are required to study the material (from this website) by yourself. You are responsible for catching up with the material. The instructor will not give you a "catch up lecture" The instructor will only answer specific questions on the teaching material
Attendance to labs is mandatory (because you must turnin the lab assignments).

Assignments

Programming assignments will involve designing, coding, testing and debugging non-trivial programs based on a written assignment specification. Programs involve a conceptual understanding of language features as well as skill with various software tools. With programming it is important to “work smarter, not harder.” Unskillful approaches can lead to long, tedious, unsuccessful hours of work. The right approach can help you write correct, easy-to-understand and efficient code with minimal effort. Programs must be completed individually although you are welcome to discuss general principles and concepts about the assignments with other students (and the instructor and TA!). You will be able to work on your programs in the Math/CS Lab (E308 MSC 10 am – 6 pm M-F) and from computers in your dorm or home.
Late turn in policy: there will be a 10 points deduction for each day up to 3 days and no turnin will be accepted after 3 days.
Penalty-free extensions or makeups for exams/assignments/labs will be given only with appropriate documentation (e.g., illness) and subject to instructor's discretion.

Exams

We will have two closed-book midterm exams and a final that will test your conceptual understanding of the material and will require some attention to programming details. Doing well on the exams strongly correlates to reading and understanding the textbook! Questions will be a mix of filling in the blanks, multiple choices, and short answers. They will sometimes require you to write or analyze short bits of code. Old exams and study guides will be made available prior to each exam and solution keys will be provided after the exams.

Grading

Your grade will be determined by a weighted average of all the graded items. Grades will typically be curved so that the class mean falls in a B range. Although the numerical grade you receive for each assignment will be a raw uncurved score, you will be given the class median and mean for each exam so that you may gauge where you stand. It is very important to me that I see you making an effort. Coming to class, asking questions, and seeing me or the TA in office hours are all very good ways to demonstrate your interest in the material.
Component Weight

Programming assignments35
Lab exercises/quizzes10
Midterms30
Final25
Score Grade

93.3-100 A
90-93.2 A-
86.6-89.9 B+
83.3-86.5 B
80-83.2 B-
76.6-79.9 C+
73.3-76.5 C
70-73.2 C-
66.6-69.9 D+
60-66.5 D
0-59.9 F

Honor code

All class work is governed by the College Honor Code and Departmental Policy. No collaboration is allowed on programming assignments unless you are asked to do a group assignment. Talking to other students about general Java features used in the programs is OK but you should not look at anyone else’s code or allow anyone else to look at your code prior to submission. It is actually very easy for us to detect inappropriate collaboration or copying by running programs that analyze your submissions so just don’t go there! If you feel dazed and confused just stop by office hours. We can get you back on track! Every program assignment must have the following comment included at the top of the file.
    /*
    THIS CODE IS MY OWN WORK, IT WAS WRITTEN WITHOUT CONSULTING
    CODE WRITTEN BY OTHER STUDENTS. _Your_Name_Here_
    */

Surviving and Thriving:

This class exercises both sides of your brain! You will need to develop a solid conceptual understanding of computer science and programming principles and the ability to express your understanding in an articulate manner. Exams test your conceptual understanding and programming assignments test your software development skills. Make sure you are making progress in both areas throughout the semester. There is very little time for new material to “sink in”. You must be disciplined, attend class regularly, and keep up with the readings and assignments. Come talk to me or the TA in office hours or send email if you are having difficulty understanding. The material is very cumulative and if you don’t understand early concepts you will become quite confused later in the class. Effort is very important! Turn something in for each assignment, even if you don’t get it completely working.

Enjoy yourself and good luck!