Course Overview

Title: Principles of Computing

Units: 10

Pre-requisites: None

Description:

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 art) of computing to students with little or no prior background in this subject.

Given the great number 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.


Logistics

Instructor: Prof. Mohammad Hammoud

mhhammou@qatar.cmu.edu, CMUQ 1006, 4454-8506,
Office hours: Mondays, 10:30 - 11:59 AM.

Course Assistants

Name Email Office Hours
Fatima AlHamadi fatimaa@andrew.cmu.edu Monday & Wednesday, 3:30PM-4:30PM
Frewoyni Birhane fbirhane@andrew.cmu.edu Tuesday, 11:30AM-12:30PM & Wednesday, 12:00PM-1:00PM
Igli Mlloja imlloja@andrew.cmu.edu Monday, 12:00PM-1:00PM & Thursday, 12:00PM-1:00PM
Niamah Ayisha Nishan nnishan@andrew.cmu.edu Sunday, 6:00PM-7:00PM & Thursday, 10:30AM- 11:30AM
Abdullah Shaar ashaar@andrew.cmu.edu Sunday, 12:00PM-2:00PM
Yusuf Saquib yusufsaquib@cmu.edu Sunday & Thursday, 5:30PM-6:30PM

Class hours

Lectures:

Sundays and Thursdays, from 03:00PM to 04:20PM, in Room 2035

Recitation:

Tuesdays, from 03:30PM to 04:20PM, in Room 2035


Course Objectives

Acquiring and applying core computing skills such as problem-solving, design, and programming are critical for your success as a computer scientist and software developer. This course aims at providing you with these skills in a systematic and practical way. In particular, principles will be motivated and introduced in a natural fashion as an outgrowth of a developing discussion. Afterwards, orderly processes and/or frameworks will be presented for applying and testing these principles. Extensive and interesting programming and conceptual examples will be incorporated throughout the whole semester to make issues always concrete and applied. Principles covered in this course will carry over directly to subsequent studies of computer systems, algorithms, and applications.


Learning Outcomes

This course incorporates seven major learning outcomes. In particular, after finishing this course, you will:

  1. Understand what classes of problems computers are good at or are necessary for.
  2. Be able to analyze and abstract a given problem in a way which is amenable to an algorithmic solution.
  3. Design algorithmic solutions.
  4. Judge the effectiveness of an algorithmic solution, and ways to improve it.
  5. Apply fundamental algorithmic solution techniques when relevant.
  6. Code algorithmic solutions in Python.
  7. Debug and test Python code.

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

  1. Basic datatypes (integer, strings, booleans, floating point numbers).
  2. Arithmetic operations.
  3. Conditionals.
  4. Iteration/loops.
  5. Composite datatypes (lists and dictionaries).
  6. Functions.
  7. Input/Output and file processing libraries.

Textbook

There is no required textbook for this course. Lecture slides, notes, and code samples will be provided and posted on the course webpage as necessary.


Assessment

Each student will receive a numeric score with a corresponding letter grade, based on a weighted average of the following:

1. Homework Assignments (15%):

You will be assigned a weekly homework (except on exam weeks), which encompasses written and programming problems to help you test your understanding of the conceptual parts of the course and constantly improve your problem solving & programming skills. Each homework is to be solved individually (check the course policy on collaboration).


2. Project (10%):

There will be one single large programming project that is to be solved individually (check the course policy on collaboration).


3. Exams (50%):

There will be three in-class midterm exams, each worth 10%. In addition, there will be a final exam that is worth 20%.


4. Quizzes (20%):

There will be a weekly quiz administered at the beginning of the lecture or recitation.


5. Attendance and Participation (5%):

You are required to attend classes, participate effectively, and turn your video on during online sessions (expect for pedagogical or technical reasons—more on this can be found below under "Guidelines on Video Usage").

The below table shows a breakdown of the above four forms of assessment methods that the course involves, alongside the quantity and overall weight of each method. Please take into account that small differences in scores can make the difference between two letter grades. Letter grades will be determined by absolute standards. Individual cases, especially those near cutoff points, may be adjusted upward or downward based on factors such as class participation, improvement observed throughout the course, final exam performance, and special circumstances.

Type # Weight
Homework Assignments 8 15%
Project 1 10%
Exams 4 50%
Quizzes 10 20%
Attendance and Participation 37 5%


Guidelines on Video Usage

1. Videos Shall Be on During Live Sessions, Except for Pedagogical or Technical Reasons:

In this semester, we will use Zoom during regular class sessions to deliver lectures and/or conduct recitations. You are required to turn your camera on during every online class session unless there is a pedagogical or technical reason to have it turned off. If you have justifiable technical or personal circumstances that prevent you from having your video on during live class sessions, you will need to submit a “Waiver Form” to the Video Policy Committee at https://it.qatar.cmu.edu/forms/student-video-waiver-form/. In this waiver, you will have to explain thoroughly the reasons for which you are requesting a video exemption. The waiver, once approved by the Committee, will grant you an exemption from having your camera on during the regular class time. Please note that this waiver does not apply for examinations (in-term or final exams, or presentations that require the use of video)—more on this below. After the waiver deadline submission time, if you are not granted an exemption and if you keep your video off during classes, you will lose points for in-class attendance and participation. Please keep in mind that upon approval of the Waiver Form, the professor might need to call on you periodically with questions or comments using the microphone or the chat option to ensure your presence and involvement in class.

Having your video on and participating during live Zoom sessions will support your learning in various ways. It may reduce the feeling of isolation and keep you connected with your colleagues and the professor. It is also important to note that everyone’s “remote classroom” and “learning” experience is greatly improved if every student is “visible”. The professor will work tirelessly to engage with you and provide a rich, interactive, and high-quality remote teaching experience. Likewise, he expects a similar commitment on your side.

You are also encouraged to follow the same classroom etiquette as you would during normal in-person class sessions when connecting to virtual classes – such as: dressing up appropriately, participating when required (whether by using your audio or the chat feature on Zoom), staying engaged, and avoiding any parallel work irrelevant to the session that may be distracting and affecting others learning experience to (including emails, browsing the internet, usage of the Zoom private chat with friends). Paying attention during online sessions and contributing to discussions and questions may influence your in-class participation grades.

In order to feel more comfortable in the Zoom environment and to address privacy concerns, adding a virtual background may be an alternative option to shield away from your surroundings. Establishing a neutral “workspace” in your environment that is away from distractions also helps with your learning process.

2. Video During Quizzes and Exams:

You are required to turn your camera on during all online assessments, including quizzes, exams and the final. Your work surface, including your hands, must be visible by video at all times during examinations. No alternative arrangements will be provided to you for this request. It is important to note that if you have a physical disability that presents a barrier to abiding by these guidelines, adjustments to this policy may be made, but must first be discussed with and approved by Catherine Getchell (getchell@cmu.edu) from the Office of Disability Resources, in consultation with the professor.

3. Unauthorized Recordings:

It is extremely important to note that students are not permitted to make any personal audio or video recordings or take photos/ screenshots of classes or presentations. Any recording of live Zoom sessions, audio, and photos/ screenshots by students, and/or posting or sharing by any means (including emails, social media platforms, phones, etc.) will be a violation of university policy and could result in serious consequences, including suspension or expulsion upon review through the community standards process.

4. Sharing of Screens:

You may be invited to share your Screen during class. Please note that when you share your screen through zoom, your video does not turn on, and your face does not appear: what will be shared is the appropriate file or your entire desktop at any point in time. Please be mindful that any items on your desktop or computer screen (e.g. files, icons, open applications) that you do not want others to see should be removed or closed prior to sharing your screen.

5. Remote Attendance:

The professor may use the time you log/Zoom into a class with your Andrew ID as proof of attendance. Joining after a live session’s scheduled start time will be considered as an absence. The professor may request additional proof of participation: polls, participation in chat, and requests that the students unmute their microphones and use the audio at any point in time of the Zoom lecture. The professor will consider your failure to respond as sufficient to mark you absent or late.


Assignments

1. Getting the Assignments:

The writeup and starter files for each assignment can be found on Autolab. Log in with your Andrew ID, select the course and then the assignment. You can see the PDF with the instructions by clicking on "View writeup". The starter code and template for typing your answers are on a zip file which can be downloaded by clicking on "Download handout". Uncompressing this file will create the directory -handout with the starter code. If you need to download these files again, be careful not to overwrite your work!

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.

2. Submitting the Assignments:

You need to submit a zip file containing the completed solution.

The zip file needs to be submitted through Autolab, which will immediately run a series of tests on your code and give you a score with some feedback. 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 10 submissions for each assignment.

The score received on Autolab may not reflect your final score for the assignment, since the course staff will check the code for style and similarity between students.


Getting Help

For urgent communication with the professor and teaching assistants, it is best to send an email. If you want to talk to any of them in person, remember that their office hours are merely nominal times upon which they guarantee that they will be in their offices. You are always welcome to visit them outside of their office hours if you need help or want to talk about any issue that pertains to the course.

We ask that you follow a few simple guidelines. The professor normally works with his office door being open. Whenever the office door is open, he welcomes visits from students. However, if the office door is closed, this means that he is busy with work, meetings, or phone calls; hence, prefers not to be disturbed.

We will use the course webpage as the central repository for all the course material. In particular, on the course webpage you can always:

  • Obtain copies of any homework assignment and lecture slides.
  • View announcements that relate to the course.
  • Find links to any reference or data you need for your studying and assignments.
  • Read clarifications and changes made to any assignments, schedules, or policies.

In addition, we will use Piazza for course announcements and online discussions. Use it to ask questions and to share your experience! The course staff will be happy to answer your questions in a timely manner. However, sometimes we might wait to answer in order to let others answer or for you to think about it a little more. We encourage you to answer each others' questions!

Another important issue appears while asking questions on Piazza. Please do not send your source code to ask questions. Your questions can be related to specific parts of your programs, but while others read your code they will be affected from your solutions. We need to let others find their own solutions for a better learning.

Lastly, all communication on Piazza should not include any inappropriate content or any form of expression that will be unethical or rude. Please find our 15110 Piazza page at: https://piazza.com/qatar.cmu/fall2020/15110


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 (https://www.cmu.edu/policies/) 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 do not 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 homework 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 do not end up copying someone else's work. Your own solution, even if it is incorrect, is much better than someone else's that you do not 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.

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.

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.

If you cannot keep up with the workload due to personal issues, please see your professor. He will help you work toward a solution and will be always 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.


Health & Wellness

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.

For more information on policies and procedures, please visit this document.

Taking 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.


Class Schedule

Please refer to Schedule for the tentative schedule for the class. The schedule indicates the project and the assignment activities as well. Any changes will be always announced and reflected on this webpage.