CS 170 Introduction to Computer Science I
Spring 2013, Section 000

Lecture: MWF 10:40am - 11:30am MSC W301
Lab: Th 4:00pm - 4:50pm MSC E308A (starting Jan. 31)

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

Instructor: Denis Savenkov (dsavenk [at] emory.edu)
Office Hours: (in Emerson Hall, office E500) Wed, Fri 12pm - 2pm
You can often get your questions answered faster by emailing them to me.
TA: Daniel Garcia ulloa (dgarci8 [at] emory.edu)
Office Hours: Th 5-6pm (CS Lab E308), Fri 2-3pm (MathCS N414)


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. This course is the first of a two semester sequence for computer science majors and is followed by CS171.

Textbook and materials

"Introduction to Java Programming", Brief Version, 9/E, Y. Daniel Liang, 2012. You can get an older edition from Amazon if you wish.

For reference, you can also review the online lecture notes available from Prof. Cheung.

There are some on-line courses, which teach another programming language (Python), but can be useful for those of you who want to learn more about computer science:
edX MIT: Introduction to Computer Science and Programming
Udacity: CS101 - Introduction to computer science


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.


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 the lab or working from home) to work on your projects. In the weekly lab we will focus on learning tool skills and practice/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. Weekly labs will begin after drop/add/swap.

Attendance policy

Attendance to lectures is not required and I do not take attendance. However, 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/TA will not give you a "catch up lecture" The instructor/TA will only answer specific questions on the teaching material

Attendance in lab is mandatory (because you must turn in the lab 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, the instructor, and the TA(s). (See the below section titled "Collaboration" for appropriate collaboration policies.) You will be able to work on your programs in the Math/CS Lab (MSC E308), or on your personal desktop or laptop. Be sure to check the lab schedule as the lab is NOT open 24 hours.

Assignments must be turned in before the date and time indicated to be considered "on-time". Assignments will be accepted up to the next class period, but late assignments will have their score reduced by 10%. Assignments later than the next class period will receive no credit. I am happy to work with you if you have an extenuating circumstance (religious holiday, University activity, etc.) and you let me know in advance.


We will have two closed-book midterm exams (Mon, Feb 25th and Fri, Apr 5th) 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.

Final Exam

The final exam will be during the Math Block final. It WILL NOT be during the time scheduled via class period. This semester, the final exam will be Tuesday, May 7th, 12:30-3pm. DO NOT make plans to leave campus before the final exam. The final exam will not be rescheduled except in emergency cases with documentation provided by the Academic Advising Office in the Office of Undergraduate Education.


Your grade will be determined by a weighted average of all the graded items. Grades will typically be adjusted at the end of the semester so that the class mean falls in a B-/B range. Although the numerical grade you receive for each assignment will be a raw, unadjusted score, you will be given the class median and mean for each exam so that you may gauge where you stand.
Component Weight

Programming assignments35
Lab exercises/quizzes10
Midterms (Feb 25, Apr. 5)30
Final (May. 7)25
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
Timely handling of grade disputes: Disputes of grading on assignments, exams, etc must be discussed within one week of their return or posting. Should you find yourself having an issue with a grade, contact the person who graded the assignment. After you talk with the TA, if you are not satisfied you may contact the course instructor.

I will maintain your grades on Blackboard so that you may track your progress. Should you find a grade recorded incorrectly, please bring it to my attention immediately.

Electronic devices

Do not let your use of electronic devices such as laptops or iPads disturb other students. Use of cellphones is not allowed during my classes. You will be asked to leave class if you are disturbing me or other students in any way.

Email policy

Please use your official Emory email when emailing regarding this class. I will not discuss grades or other academic records via non-official email accounts such as gmail, yahoo, etc.

I try to answer all emails within 24 hours during the work week. If you have not received a response within that timeframe, please resend your email.

Honor code

All material in this course is covered by the Emory Academic Honor Code. All students are expected to be familiar with and follow Emory's Honor Code, particularly Article 4: Academic Misconduct. Additionally, all students are expected to read, understand, and follow the Math/CS Department's Statement of Policy on Computer Assignments (SPCA).

If you have any questions about what does or does not constitute academic misconduct for this course, you should contact the instructor for an explanation. Ignorance is not an excuse. Academic misconduct in my courses is not tolerated, will be prosecuted vigorously, and will be referred to the Honor Council immediately.

Collaboration with other students in this CS 170 class is an important learning method. However, collaboration should not extend to cheating (unauthorized assistance from others) or plagiarism (copying someone's work without attribution). The following guidelines will help you understand the difference between collaboration and plagiarism.

  • Students may only collaborate with fellow students currently taking CS 170, the TA(s) and the lecturer. Collaboration means talking through problems, assisting with debugging, explaining a concept, etc.
  • You should never exchange code or write code for others. A good rule of thumb is to always begin your assignments with a blank window.
  • You should never copy code verbatim from another source, including the course texts. This is plagiarism.
  • Each student must turn in a unique program.
  • Your submission must not be substantially similar to another student's submission. Collaboration at a reasonable level will not result in substantially similar code.
  • In the absence of written instructions, you should assume all assignments are individual assignments and should be completed alone.
  • For all programming assignments, you must write comments at the top of each file which include the following information:
    • your name
    • your Emory email address/user ID
    • the statement:
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!


Emory University complies with the regulations of the Americans with Disabilities Act of 1990 and offers accommodations to students with disabilities. If you are in need of a classroom accommodation, please make an appointment with me to discuss this as soon as possible. All information will be held in the strictest confidence. It is the policy of Emory University to make reasonable accommodations for qualified students with disabilities. All students with special requests or need for accommodations should make this request in person as soon as possible.

Surviving and Thriving:

  • While lecture attendance is not required, you will do best in this course if you attend regularly. You are responsible for all material covered in class.
  • Keep up with the reading. Readings should be completed before class on the date indicated on the Calendar.
  • Do your homework! Learning in Computer Science is like learning a sport. It takes actual practice and time to get good. The assignments that are given are opportunities to learn the material that you will be responsible for on exams.
  • Take responsibility for your course work submissions; it is your job to make sure that you successfully turned in what you meant to turn in. Be sure to verify your submission. This is how you make sure that you get credit for the work you do.
  • Make use of office hours. We're here to help you. Be prepared when you go to get help from a TA or your instructor. Bring your work with you.
  • Take initiative. Begin your assignments early and if you think you need help, come prepared. Use the resources that are provided for you, and be determined to succeed from the start.
  • The material is very cumulative and if you don't understand early concepts you will become quite confused later in the class. 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.
  • Effort is very important! Turn something in for each assignment, even if you don't get it completely working. Come to the instructor's/TA's office hours and ask questions in class when you don't understand. All these things show us you are trying and making an effort.
  • If you are having problems, I encourage you to come speak to me. However, if you have any issues about the course which you are not comfortable discussing with me, please contact Dr. Ken Mandleberg, the Director of Undergraduate Studies for the Math/CS Dept. (km (at) mathcs.emory.edu).