This is a course in fundamental computing principles for students with little to no computing background with the following learning objectives:

  • Express computational ideas algorithmically using sequencing, iteration and recursion.
  • Write small Python programs that use common data structures such as lists and trees.
  • Analyze the complexity of simple programs using the Big-O notation.
  • Explain how data is represented in memory and how abstraction is used in organizing and reasoning about data.
  • Explain how abstraction is used in computer organization, computer networking, and the Internet.
  • Apply computational techniques such as divide and conquer and randomness in solving problems.
  • Describe why and how concurrency is used in computing.
  • State what it means for a problem to be computable, non-computable, or intractable.
  • Describe some problems and techniques studied in the field of AI and explain why heuristics are used for solving complex AI problems.


1 MWF 2:30 - 3:20 Wean Hall 7500 Margaret Reid-Miller, Mark Stehlik
2 MWF 3:30 - 4:20 Wean Hall 7500 Margaret Reid-Miller, Mark Stehlik


There is no required textbook for this course. We will provide lecture slides and draft lecture notes as needed. We will additionally assign some readings from the book Blown To Bits: Your Life, Liberty, and Happiness after the Digital Explosion by Hal Abelson, Ken Ledeen, and Harry Lewis. Publisher: Addison-Wesley, 2008 (ISBN: 978-0137135592). This book is available for free from bitsbook.com. You can buy a hard copy of this book if you wish from any major bookseller. The following textbooks are recommended as supplementary resources:

  • Explorations in Computing: An Introduction to Computer Science and Python Programming by John Conery. September 2014 edition. Publisher: Chapman and Hall/CRC. This book is available as an e-book or e-book rental (ISBN 9781498718349) and as a hardback (ISBN 9781466572447).
  • Introduction to Computation and Programming Using Python by John V. Guttag. August 2013 edition. Publisher: MIT Press. This book is available as an e-book (ISBN 9780262316644) and as a paperback (ISBN 9780262525008).


There are two types of assignments you will complete in this course: problems sets (PS) and programming assignments (PA). Problem sets are written assignments that help you test your understanding of conceptual parts in this course. Programming assignments help you test your programming skills or use of other online tools presented in class. Problem sets are handed in in class and programming assignments are handed in using Autolab. You will be assigned about 11 problem sets and 9-10 programming assignments throughout the semester, but these numbers are subject to change.

Exam Dates

  • Written Exam 1: Feb 22
  • Lab Exam 1: Mar 9
  • Written Exam 2: Apr 10
  • Lab Exam 2: May 4
  • Final: TBA

Grading Policy

Programming Assignments 15%
Problem Sets 15%
Lab Participation 5%
2 Lab Exams 10%
2 Written Exams 30%
Final Exam 25%

All assignments must be handed in on time (unless you are given instructions otherwise). Late or missing work will receive zero credit. The reason this is done is so that we can get feedback to you as quickly as possible so you can learn from your mistakes and prepare for the exams. Additionally, it allows us to post a sample solution as soon as possible for the benefit of all students. We will drop 1 written assignment and 1 programming assignment with the lowest grade (except where noted). You are required to provide documentation if you could not submit an assignment due to a legitimate reason (e.g. major illness, death in immediate family, university-sanctioned event with verification from advisor or coach, etc.). You must take all exams (written and lab exams) at the times they are given. There will be no makeups for exams allowed except for acceptable documented circumstances such as the ones listed above.

Grades from all assignments and exams may be reviewed for up to 5 days after they are returned and posted. After this period, the grade is considered final and cannot be changed. We reserve the right to review an entire assignment or exam if it is submitted for re-grading.

We use Autolab for releasing all of your grades and we expect you to use it to keep track of your grade status.

Discussion Forum

We use Piazza for announcements and discussions.

Academic Integrity

The value of your degree depends on the academic integrity of yourself and your peers in each of your classes. Please read the University Policy on Academic Integrity carefully to understand the penalties associated with academic dishonesty at Carnegie Mellon University.

Academic integrity means that any work you submit for this course is your own. This is critical to your learning. The policy's intention is that you never hand in something you don't understand. Your understanding must be deep enough that, if necessary, you could re-do the work completely on your own. In short, do your own work.

We want you to collaborate with other students only if the collaboration improves your understanding. Therefore, you can talk about the assignments, but no one may take notes or record the discussion. When you write your solution, it should be yours. Go to a separate area and write your own code or answers. Do this individually so that you don't end up copying someone else's work. Your own solution, even if it is incorrect, is much better than someone else's that you don't understand.

When working on programming assignments, do not look at other students' code or show them your own. If you need that kind of help, get it from the course staff. You may discuss your code at a conceptual level; for example, "do we need a loop for this purpose or just an if statement?". You may collaborate on code at a whiteboard, but you may not take notes or photographs; the purpose of the collaboration is to develop your understanding so that you can then solve the problem yourself, on your own. Don't sit side by side with another student as you write your program solutions, as you may be tempted to stay in "locked step" and result in highly similar code.

If the course staff sees similarities between your work and that of another student, we will attempt to understand what happened. Usually this involves asking you to explain your work and how you did it, and to re-create the work or solve a related problem during our meeting.

If you find yourself with little time to finish an assignment, it is better to turn in an incomplete assignment or no assignment than to make the wrong choice and resort to academic dishonesty, as the consequences can be severe.

For exams, your work must be your own with no communication between you and others (except course staff), and you may use only authorized materials.

Often students have trouble keeping up with the workload due to personal issues. If this happens to you, your best action is to see your instructors. We can help you work toward a solution and will be happy to assist.

In this class, cheating, copying, or plagiarism means copying all or part of a program or homework solution from another student or unauthorized source, or knowingly giving such information to another student, or handing in a copy of work that you and another student did together, or giving or receiving unauthorized information during an examination. If you use information from another authoritative resource, you must cite the source of this information (and receive permission if required).

Students who violate this policy will be charged with academic dishonesty that can result in failure in this course and possible expulsion from Carnegie Mellon University. Review the official University Code for more information.

Every student is required to complete the OLI Academic Integrity Module within the first week of classes.

Equal Opportunity Services

Individuals with documented disabilities may be eligible to receive services and accomodations from CMU's Equal Opportunity Services (EOS) office. For more information, please contact Larry Powell, Manager of Disability Services at (412) 268-2013 (voice/TTY).

Take care of yourself

Do your best to maintain a healthy lifestyle this semester by eating well, exercising, avoiding drugs and alcohol, getting enough sleep and taking some time to relax. This will help you achieve your goals and cope with stress.

All of us benefit from support during times of struggle. You are not alone. There are many helpful resources available on campus and an important part of the college experience is learning how to ask for help. Asking for support sooner rather than later is often helpful.

If you or anyone you know experiences any academic stress, difficult life events, or feelings like anxiety or depression, we strongly encourage you to seek support. Counseling and Psychological Services (CaPS) is here to help: call 412-268-2922 and visit their website. Consider reaching out to a friend, faculty or family member you trust for help getting connected to the support that can help.

Frequently Asked Questions

  • I have questions about my assignment that is due soon. How do I get help?

    You can go to one of the office hours to receive help from the TAs or the instructors. You can also post your question to Piazza to get an online response.

  • How can I find my grades?

    All your grades are available on Autolab upon being graded. We make every effort to make your grades available within a week of their due date.

  • Some of my grades are missing on Autolab. What do I need to do?

    First, contact your TA and ask why all or some grades are missing. Next, if the issue is not resolved within a day or two, send an e-mail to the instructors (copy your TA) detailing which grades are missing and your lab section.

  • Can I switch my recitation section?

    Yes, as long as we have enough space in the new recitation. You must make an official change of recitationsthrough SIO.

  • I must be out of town for university related event (e.g. member of a team). What should I do about my assignments?

    If you have an official excuse we will make special arrangements for you to submit the assignment; please contact the instructors.

  • I missed one of the lab sessions. Can I still submit my lab assignment late?

    No. However, you can drop two labs and we will count this as one of them.

  • I am out of town attending a family/important event . How can I submit my assignments due for the week?

    The programming assignment must be submitted online on Autolab before the deadline. If the link is not active and you need to submit your work before leaving, you should alert your TA that the link has not been made active. The written assignment must be scanned and sent as an attachment to your TA before the due date. However, we can only allow you to do this one time during the semester.

  • I missed the in class exam because I fell sick. What should I do?

    You must immediately seek medical treatment and receive an official medical excuse. You must also contact the instructors prior to the exam or as soon as possible. In this case, once we see the excuse, we can make arrangements to give you a makeup test. Otherwise, we will be unable to make any exceptions.

  • I need to discuss my performance in the course with someone. What should I do?

    You must immediately contact one of the instructors of the course. They will be able to assist you in dealing with the situation.

  • What is the best way to prepare for an in class exam?

    If you are attending lectures and doing homeworks, you are well prepared. All you need to do is to review all lectures and class assignments. We also regularly offer help sessions before the exam. Plan to attend one of them.

  • I am failing the course. Is there any extra work I can do to get a passing grade?

    Unfortunately, in a large class like ours, we cannot make exceptions. The best way to avoid this situation is to talk to one of the instructors as soon as possible to find out what you need to do. Do not wait until the last few weeks of classes to discuss your performance.

  • I want to add this course. Is it possible to do it?

    You can only add a course during the first two weeks of classes. We do not accept any new students after the second week. However, you are welcome to audit the course, provided we have enough space. Please consult an instructor.