15-112 Fundamentals of Programming and Computer Science

Home       Schedule      Assignments     Resources    Blackboard


Fall 2012
Saquib Razak
Lecture, Sun Tue Thu 10:30-11:50, CMU 2035
12 units

A technical introduction to the fundamentals of programming with an emphasis on producing clear, robust, and reasonably efficient code using top-down design, informal analysis, and effective testing and debugging. Starting from first principles, we will cover a large subset of the Python programming language, including its standard libraries and programming paradigms. We will also target numerous deployment scenarios, including standalone programs, shell scripts, and web-based applications. This course assumes no prior programming experience. Even so, it is a fast-paced and rigorous preparation for 15-122. (From University Catalog)

  1. Course Objectives
  2. Learning Outcomes
  3. Class Format and course discussions
  4. Office Hours
  5. TextBook
  6. Grading Policy
  7. Cheating and Collaboration
  8. Classroom

Course Objectives

Students completing this course will be well positioned to:
1. Discuss the major aspects of a computer program and how computers solve problems.
2. Implement small programs to solve well-defined and rather simple problems.
3. Able to develop programming and computer science skills based on these materials and prepare for taking 15-122 Principles of Imperative Computation.

Learning Outcomes:

Upon successful completion of this course, students will be able to:

  1. Understand and able to use all control structures, basic functions, and all primitive data types in small programs of less than 300 LOC (Assessed by demonstration in the majority of the programming assignments)
  2. Implement simple iterative solutions given a detailed design (Assessed by demonstration in the majority of the programming assignments)
  3. Explain the key ideas behind sorting and search algorithms and provided general guidance, implement at least one such algorithm of each.
  4. Able to implement a provided detailed design using all of the standard control of flow statements of Python (Assessed by demonstration in the majority of the programming assignments)
  5. Perform basic I/O operations to the console in textual form, read and write text files.

Class Format

There will be three classes each week:
    Sunday, 10:30 am – 11:50 am
    Tuesday, 10:30 am – 11:50 am
    Thursday, 10:30 am – 11:50 am

Classes on Sundays and Tuesdays will consist of 50 minutes of lecture and 30 minutes of exercises. Thursday’s class will have a 20 minute quiz at the beginning of the class and then 60 minutes of lecture and exercises. The weekly quizzes will test topics that are covered in the readings, lectures, and exercises.

This term we will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates, the TA, and myself. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza. If you have any problems or feedback for the developers, email team@piazza.com.

Find our class page at: https://piazza.com/qatar.cmu.edu/fall2012/15112/home

Office Hours

Instructor Office Hours:  Sun Tue Thu, 1 to 2pm, Room 1018

TA Office Hours (in ARC):
        Afnan Fahim:
        Sidra Alam:

Text Books and Resources

Grading Policy

Course Component Weight
Final Exam 20%
Midterm 10%
Class Participation 5%
Quizzes 25%
Homeworks 30%
Term Project 10%







Grade Assignment:
A: 90 - 100
B: 80 - 89
C: 70 - 79
D: 60 - 69
R:  0 - 59

Final Grade Policy:
You need to score 65% or better in class assessment(grade comprising of quizzes, midterms and the Final Exam) to score a C or better in the course.
Final Exam:
There will be a standard 3-hour final exam during the final exam period at the end of the semester.  The final exam is worth 20% of the semester grade.
Midterm Test:
There will be 1 midterm test worth 10% of the semester grade, given in class as noted in the course schedule.
Quizzes will be given approximately once per week at the beginning of class on Thursdays unless otherwise announced.

Late Policy:
No late / make-up quizzes or tests will be administered, except in the case of medical or family emergencies or other university-approved absences. For qualifying missed quizzes, students should obtain instructor approval before missing the quiz.  Students may then make-up missed quizzes by attending professor's office hours up until the Wednesday following the quiz.
Late Homework:
Homework is due at a specified date and time. All submissions will be through blackboard. Homeworks will lose 10% for each hour the assignment is late as specified below and as recorded by the Blackboard Digital Drop Box. Programs are due at 7:59 pm on the specified date listed on the assignment description unless otherwise specified. Start early and get your work done ahead of schedule and you will not have to worry!

Cheating and Collaboration

Unless otherwise noted, for homework assignments, students are encouraged to talk to each other, to the course staff, or to anyone else about the assignments. This assistance, though, is limited to the discussion of the problems in general.  Each student must develop his or her own solutions to the homework. Consulting another student's solution is prohibited, and submitted solutions may not be copied in whole or in part from any source.
Specifically:  do not look at other students' code or written answers, and do not show them your code or written answers, until after the assignment deadline has passed and the assignment has been submitted and graded.

And:  do not email or otherwise electronically or physically transfer your code to other students, and do not receive such transmissions from other students, until after the assignment deadline has passed and the assignment has been submitted and graded.
In particular, this precludes students helping each other debug their code (since you may not even look at their code). Of course, students may (and should!) seek debugging assistance (and any other help) from the course staff, who provide extensive support to all students via email, office hours, review sessions, and 1-on-1 tutoring by appointment.
Also, if you find a reference (say, in an optional textbook or some online source) that contains code or a written solution that is identical or overtly similar to an assigned problem, then you are required to not look at that code or written solution!  You may still refer to supporting figures and explanatory text, but you may not look at or copy the code.

In addition to manual checks on homework and exam submissions, we will also routinely use an automated plagiarism detector.
The issue of cheating will be taken seriously by the instructor and CA's.  Any violations will be handled in accordance with the University regulations, with serious consequences on the first offense (minimum of -100% on that submission).


Recording (audio or video):  Students may not record lectures without explicit permission in writing from the instructor. Violations will result in your failing the course. Exceptions will be granted in accordance with university guidelines for accessibility concerns, but even then such recordings may not be shared publicly or privately and must be deleted at the end of the semester.

Electronics:  Students may not use any electronic devices in lecture (no cell phones, laptops, iPads, iPods, iWhatevers, etc) without explicit permission in writing from the instructor. Do NOT login to the cluster computers unless explicitly asked by the instructor.  Students are expected to take notes, but to do so manually (pen and paper).