15-110: Principles of Computing (Spring 2025)

CS quote

Overview

Computing can be defined as the study of computational processes that manipulate information. A computational process is one that can be automated, and thus executed by a computer. Therefore, one of the main underlying questions is: what can be (efficiently) automated? This course aims at introducing the science (and the art) of computing to students with little or no prior background in this subject.

Given the great amount of topics involved in computing, the course will focus on a subset of its core aspects, providing a brief, yet substantial introduction to many concepts. The goal is to provide an idea of what can be automated, and how to realize when it is useful (or, most often, necessary) to employ computation and computers to accomplish a complex goal.

The course will take the student along the way that starts from a complex, possibly large problem to solve, and then move step by step to its abstraction, to its formalization into an algorithmic recipe, to the encoding of the algorithm using the constructs of the python language, to the run-time execution and error correction of the programming code, to the efficiency analysis of the developed algorithm and code.

Learning goals

The Python constructs introduced throughout the course include, but are not limited to:

Pre-requisites

None.

Credits

This is a 10 unit course.

Place and time

Mondays and Wednesdays 2:30 to 3:45 Room 3069 lectures
Thursdays 2:30 to 3:45 Room 3069 labs / quizzes

All class communication, office hours, discussions, and assignment handouts will be on a Piazza. Make sure you sign in as soon as you receive the invitation.


Assessment

Letter Grade Assignment
The course uses the standard grade percentages as follows:

Final Grade Policy

You must receive a 60% or higher (calculating using the appropriate weightings above) on in-class assessments in order to receive a D or higher in the course. You must receive a 65% or higher (calculating using the appropriate weightings above) on in-class assessments in order to receive a C or higher in the course.

Participation Policy

The Participation, Attendance, and Labs grade (worth 4% of your semester average) will be updated at mid-semester and at the end of the semester before the final exam, and depends on several factors relating to your accountability, engagement, and participation. The course requires you to attend and actively participate in all the lectures and labs.

Homework Late Submission Policy

In an ideal world, we would be able to support varying submission schedules so that all students could work at their own pace. Unfortunately, this is impossible. We need you to submit assignments on time so that we can promptly give feedback to all students, to support the learning process. However, we understand that life can sometimes get in the way. Therefore, we provide 1 grace day for homework assignments. It can be used to submit homeworks up to 24 hours late with no penalty. We strongly urge you not to use the grace day immediately; try to save it for unforeseen events. Once you run out of grace days, late submissions will receive a score of 0.

Make-up Quizzes/Exams

No late / make-up quizzes or exams will be administered, except in the case of medical or family emergencies or other university-approved absences. For qualifying missed assessments, students must obtain instructor approval and schedule the make-up exam before missing the exam.


Schedule (subject to changes)

In the table below, labs and quizzes are in green, exams are in orange, and assignment due dates are in pink.

For copies of the demo code written in class, please see the demo code repository.



Staff

Hend Gedawy (Instructor)

Office: 1016
Office hours: by appointment
E-mail: hkg@andrew.cmu.edu


Eric Gao

Office: ARC
Office hours: check calendar
E-mail: jingxia3@andrew.cmu.edu

Talhah Peerbhai

Office: ARC
Office hours: check calendar
E-mail: talhah@cmu.edu


Aboud Abdalla

Office: ARC
Office hours: check calendar
E-mail: aabdalla@andrew.cmu.edu

Adam Rakab

Office: ARC
Office hours: check calendar
E-mail: arakab@andrew.cmu.edu


Hajer Dahmani

Office: ARC
Office hours: check calendar
E-mail: hdahmani@andrew.cmu.edu

Nick Devidze

Office: ARC
Office hours: check calendar
E-mail: ndevidze@andrew.cmu.edu



Assignments


Getting the Assignments

The instructions and starter files for each assignment will be posted on Gradescope.

We strongly suggest that you create one folder for each assignment inside a folder dedicated for this course on your machine. Submissions containing code from previous assignments, or old code from the current assignment will not be reconsidered.


Submitting the Assignments

You will need to submit a .py (or a zip) file containing your solution on Gradescope.

There is an autograder that will immediately run a series of tests on your code and let you know if your solutions passed the tests or not. Make sure to check it! If your code does not pass all tests, you can submit it again until the deadline. You are limited to a total of 5 submissions for each assignment.

The score received on Gradescope may not reflect your final score for the assignment, since the course staff will check the code for style and for code similarity between students, to ensure that you are not violating rules of academic integrity.


Homework Interviews

After submitting the homework, the course staff will conduct interviews to evaluate your understanding of the solutions. The interview will be carried out every week at the same time and it will be scheduled at the beginning of the semester. During the interview, one of the homework tasks will be randomly chosen and you will have to solve it live on paper. Each interview will take at most 15 minutes.

The rubric for evaluating the interviews with a grade score between 0 (no show) and 5 is as follows:

  1. Code is mostly incomplete or incorrect, explanation does not show understanding of what is going on.
  2. Code and logic are only partially correct, explanation does not show a solid understanding of what is going on.
  3. Code is more or less correct, still with some errors, explanation is not fully satisfactory.
  4. Code looks good, minor issues, little misunderstandings in the explanation.
  5. Code is correct, clear and didactic explanation.

The course staff might also ask for small variations of a problem to gauge understanding. In particular, we encourage you to not be afraid to say wrong things, you can always correct yourself!

Together with writing the code, you should also strive for a clear, concise, and didactic explanation of the solution logic. Think that you are explaining your solution to someone who is one month behind you in this course.

Note that if you are getting too much help with the homeworks, to the point that you are not able to solve it again during the interviews, you will consistently loose up to half of the homework grade. So make sure you are actually understanding what you are doing, and not copying it.

Rules of Conduct

You have limited time to convince us that you know what you are doing, so prepare in advance.


Tools

Set up your your programming environment by installing the Anaconda distribution (Python 3.12 version):

The download is relatively large, so make sure you are at a place with fast and reliable internet connection. Once installed, you can start the Anaconda-Navigator and launch from there the Spyder editor, which you will use to develop and test your python code.


Policies

You are expected to comply with the university policy on academic integrity (see also The Word and Understanding Academic Integrity).

Collaboration is regulated by the whiteboard policy: you can bounce ideas about a homework with other students, but when it comes to typing it down for submission, you are on your own. You are not allowed to use notes, files, pictures, etc, from any previous discussion nor previous versions of this course.

We will run a program that detects code similarity on all your homework submissions. If students are found to have submitted almost the same code, they will be contacted and this may result on an academic integrity violation report.


An Invitation to Students with Learning Disabilities:

Carnegie Mellon University is committed to providing reasonable accommodations for all persons with disabilities. To access accommodation services you are expected to initiate the request and submit a Voluntary Disclosure of Disability Form to the office of Health & Wellness or CaPS-Q. In order to receive services/accommodations, verification of a disability is required as recommended in writing by a doctor, licensed psychologist or psycho-educational specialist. The office of Health & Wellness, CaPS-Q and Office of Disability Resources in Pittsburgh will review the information you provide. All information will be considered confidential and only released to appropriate persons on a need to know basis.

Once the accommodations have been approved, you will be issued a Summary of Accommodations Memorandum documenting the disability and describing the accommodation. You are responsible for providing the Memorandum to your professors at the beginning of each semester.


Take Care of Yourself:

Do your best to maintain a healthy lifestyle this semester by eating well, exercising, 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-Q) is here to help: call 4454 8525 or make an appointment to see the counselor by emailing student-counselling@qatar.cmu.edu. Consider reaching out to a friend, faculty or family member you trust for help.

If you or someone you know is feeling suicidal or in danger of self-harm, call someone immediately, day or night at 5554 7913. If the situation is life threatening, call 999.