15-112 Fundamentals of Programming

Course Syllabus

Welcome to 15-112! This course introduces students to computer programming. It is intended for students with little or no background in programming. Even so, this course is a fast-paced and technical introduction. Students looking for a gentler introduction to computer science concepts should consider taking 15-110 first.

A computer program is simply a set of instructions that tells a computer to perform a task. However, finding the right set of instructions can be quite challenging. For this, one has to learn how to structure a larger problem into small subsets, and then find the solution to each of those subsets. A big part of this course is dedicated to teaching students a way of thinking that will enable them to build non-trivial programs.

Just like human-understanble instructions can be given in various human languages, computer-understandable instructions can be given in various programming languages. There can be important differences between programming languages, but many of them use the same building blocks that are fundamental to programming. Once you learn a programming language, it becomes much easier to learn another language. This course uses the Python programming language.

Learning Objectives

  • Design and describe precise, unambiguous instructions that can be used to solve a problem or perform a task;
  • Translate these instructions into Python code that a computer can understand;
  • Write programs that solve complex problems by decomposing them into simpler subproblems;
  • Apply programming-style conventions to make your programs easy to understand, debug and modify;
  • Learn independently about new programming-language features and libraries/modules by reading documentation and by experimenting.
  • Prerequisites

    None.

    Resources

    There is no required text for the course. The lectures will be recorded and the links to the video recordings as well as the slides will be provided on the course website. We will also provide links to the Spring 2016 edition of the course webpage, which contains very useful examples and videos!

    If you want to look at books which contain part of the course material, we recommend the following:

  • How to Think Like a Computer Scientist (interactive online textbook)
  • Python Programming: An Introduction to Computer Science (regular textbook)
  • If you have any Python specific questions, the first place you should look at is the official Python documentation:

  • Python 3.5.1 documentation
  • Information you find above is guaranteed to be correct. The same cannot be said of information you might find on, say, Stackoverflow. Be careful about googling concepts related to a homework question as this may violate academic integrity (see the section on academic integrity below). You are, however, always welcome to (and encouraged to (!)) use the official Python documentation.

    Communication with the Course Staff

    Every student is required to signup for the course's Piazza page! Course related announcements will be made using Piazza, so you must check Piazza every day.

    If you have a question regarding the lecture material or a homework question, please make use of the following resources:

  • Piazza: Piazza is best suited for questions with a short answer.
  • Office hours: Questions that require a back and forth conversation is much better suited for office hours.

    For personal matters, you can directly email the course instructor (aada).

    If you have a grading related question, please contact the head CA (moqings).

    Grading

    Your grade for the course will be calculated according to the following table.

    Course Component Weight
    Homework 25%
    Exam 1 20%
    Exam 2 30%
    Quizzes 10%
    Term Project 10%
    Participation 5%

    Homework

    There will be multiple homework assignments every week for the first 5 weeks. There will be 2 (or possibly 3) small assignments due during the week, and 1 larger assignment due during the weekend. It is important that you complete all assignments, as this is the major way in which you will learn the material. By working hard on the assignments, you will gain essential experience needed to solve problems on the exams and create term projects that you can be proud of.

    Assignment submissions will take place on Autolab. Every student is responsible for verifying that their submissions are successful. In recitation, we will walk you through how to submit your work on Autolab.

    Unless explicitly stated otherwise, all homework must be done by yourself without collaborating with anyone else. You are of course welcome to (and encouraged to (!)) ask questions to the course staff in office hours or Piazza.

    Late Policy: You are allowed 2 free (no penalty) late days for the course. (These are also called grace days.) You can use at most 1 grace day for an assignment. The late days cannot be broken down further, i.e., even if you submit 5 minutes late, it will count as 1 late day. Once you submit a day late, one of your grace days will be automatically deducted by Autolab. You do not have to notify us. After you have used up both of your late days, late submissions will not be accepted and will result in 0% for that assignment. Exceptions to the lateness policy will not be granted without appropriate justification (e.g. medical or family emergency) submitted in writing and supported by documentary evidence.

    Exams

    We will have 2 exams during the semester (June 6th and June 20th). Both will be held in lecture and they will be cumulative. More information will be provided before the exams.

    Quizzes

    We will have 5 quizzes during the semester (May 20th, May 27th, June 3rd, June 10th, June 17th). All will be held in Friday recitations. The quizzes will help you prepare for the homework and the exams.

    Term Project

    An important component of the course is the term project. The last week of the course will be entirely devoted to working on your term projects. You will have the freedom to create any program you want! This will be a great way to display all of the programming skills and knowledge you have learned in the course. We hope that you will work on a project that you really find interesting, that you'll have fun working on, and that you'll be proud of at the end.

    Participation

    You are expected to attend every lecture and recitation unless you have special permission from the instructor. Attendance will be taken and will be used to calculate your participation grade.

    Academic Integrity

    We understand that most of you would never consider cheating in any form. There is, however, a small minority of students for whom this is not the case. In the past, when we have caught students cheating they have often insisted that they did not understand the rules and penalties. As a part of the first homework, you will be required to acknowledge that you have read and understood the cheating policies. Please read Carnegie Mellon University Policy on Academic Integrity. The following are some clear examples of cheating:

  • Looking at another student's paper during an exam or a quiz.
  • Submitting code that does not belong to you without properly citing your sources.
  • Looking at a piece of code related to a homework problem that you have not written yourself or that is not published by the course.
  • Showing to someone else a piece of code related to a homework problem that is not published by the course.
  • Googling for specific keywords that happen to appear in one of the homework questions.
  • Getting help from someone who is not part of the course staff.
  • Receiving exam related information from a student who has already taken the exam when you have not.
  • Attempting to hack any part of the 15-112 infrastructure.
  • Lying to the course staff.
  • Consequences: The penalty for cheating can range from a 10% deduction on your overall course average (i.e. a letter grade drop) to directly failing the course. Furthermore, in most cases, a letter to the Dean of Student Affairs is sent and further consequences are determined by them.

    Plagiarism Detection

    We will be using automated software similarity detection tools to compare your assignment submissions to that of all other students who are currently taking the course and who have taken the course in the past. These tools are very effective at what they have been designed for. For a demonstration, please watch how it works (avi or mp4). Note that the main use of these tools is to determine which submissions should be manually checked for similarity by the instructor; we will not accuse anyone of copying or working in groups based solely on the output of these tools.

    You may also be asked to present and explain your assignment submissions to the instructor at any time.

    Extended-Time and Make-Up Policy

    We are happy to accomodate students that require extended time approved by Larry Powell's office. Please contact the instructor if you are in this situation.

    There will be no make-up quizzes, exams, or homeworks, except in the case of documented medical or family emergencies, or other university approved absences. The common cold or your computer crashing do not qualify as an excused absence. Keep in mind that you have 2 free late days for the homework. You should save up your free late days for when you really need it, e.g., when your computer crashes.

    Well-being and Happiness

    We very much care about your well-being and happiness! Be aware that everyone on the course staff is always available to provide counsel or chat, and you should attend office hours as often as you want for academic and non-academic conversation.

    However, also know that the university provides services that you may want to take advantage of at some point during the semester. Over the summer some resources from the regular semester may be limited or non-existent. If you are ever unsure about them, run into a problem, or want more information, feel free to reach out to Sarah Boyle (sboyle), a CA and the Wellness Coordinator for the course.

    For a comprehensive list of CMU's healt health services, please click here.

    CMU Police Department

    Do not hesitate to call CMU police when in an emergency or if you are interested in taking advantage of their services.
  • Website: http://www.cmu.edu/police/welcome.html
  • Emergency phone number: 412-268-2323
  • Non-Emergency phone number: 412-268-6232
  • Counseling and Psychological Services (CAPS)

    CAPS has a more limited staff during the summer but is still available for you to use. They offer therapy, crisis support, etc. and you should reach out to CAPS for counseling if you are struggling, no matter how small you may think your problems are. If CAPS can’t help you appropriately, they also do referrals and basic consultations to help you find what you need.
  • Hours: Monday through Friday 8:30am-5:00pm
  • Phone number: 412-268-2922
  • Location: 2nd floor, Morewood Gardens, E-Tower
  • University Health Services

    Health services can help you in the same way a doctor does but they also offer comprehensive care management and health promotion services.
  • Summer Hours: M, Tu, W, F: 8:30am-5:00pm, Th: 10:00am-5:00pm, Closed on the weekend
    Note: When UHS is closed, there is a physician on-call until 11:30am at 412-268-2157.
  • To set up an appointment on HealthConnect, click here.
  • Comprehensive Care Manager: Diane Dawson, 412-268-9171
  • 15-112 Non-Technical OH, Wellness help

    If you find yourself struggling in any way or simply would like to discuss how you are feeling about 112 or just chat, reach out to one of the following people or your CA to get help setting up a casual meeting. During office hours we will also offer non-technical help, that is help on approaching your work, managing stress, etc.
  • Sarah Boyle (Wellness Coordinator): [email protected]
  • Cissy Shi (Head CA): [email protected]
  • Anil Ada (Instructor): [email protected]


  • Valid CSS! Valid XHTML 1.0 Strict