CSC-148

CS 148: Introduction to Computer Science 1 (4-credit course) American University, College of Arts and Sciences, Fall 2023

Instructor: Raza Ul Mustafa, rmustafa@american.edu

Office hours:

Wednesday 11:00 – 12:00 PM

Thursdays 11:00 – 12:00 PM

Other times (in person or on Zoom) by appointment (please email me for times)

TAs:

Philip Eigen  (section 002):

Office hours: 11:00 – 12:00 PM

The TAs for this class help me throughout the week and during their assigned classes, as well as provide office hours for students from any section who are struggling with or just have questions about the material or any of the assignments. Come to whichever TA office hours are convenient for you to ask questions or to seek help with assignments; there is no need to limit yourself to the TA assigned to your section!

Please be respectful of your TA’s time! If there are other students at the TA’s office hours, please make sure that you let other people ask questions as well. It is best to come to TA office hours with specific questions; you should always try the problems/assignments on your own first. Please do NOT just come to TA office hours and “camp out” while you work on problems, as that makes it hard for the TAs to work on other tasks that I have given them.

Course Description:

CSC 148, Introduction to Computer Science is a rigorous introductory course in computer science that is the first course that counts toward a CS major. This course will introduce computer programming and concepts of problem analysis, algorithm development, and data structures in a variety of contexts, including text processing, data visualization, and simple games. It aims to provide students with an understanding of the role computation plays in problem solving and to help students, regardless of their majors, feel confident of their ability to write small to medium-sized programs that allow accomplish useful goals. The class will use Python 3 as the primary programming language.

Course content will include programming assignments, frequent problem sets (called “quizzes” in Canvas), readings, two midterm exams, and a final exam. Midterms will be held during class time; the final will be held during the university-assigned exam period. Attendance is required and will count toward the final grade.

Objectives:

This course has the following objectives:

  1. Student will independently write small to medium sized programs to solve common problems, such as math problems that need numerical computation, simple interactive games, file and text processing, and scientific data plotting.
  2. Student will exhibit fluency in the use of procedural statements — assignments, conditional statements, loops, and methods.
  3. Student will exhibit fluency in using functions: defining functions, passing parameters, calling, and using functions.
  4. Student will exhibit an understanding of and will be able to use basic data types such as floats, booleans, strings, lists, tuples, and dictionaries; will know how to convert data between types.
  5. Student will exhibit a basic understanding of different classes of simple algorithms such as recursion, bisection search and sorting.
  6. Students will be in a position to compete for research projects and excel in subjects with programming components.
  7. Students will exhibit a solid foundation for subsequent object-oriented programming classes (e.g., those that use Java, C++, Web Programming).
  8. Students will exhibit fluency in everyday computational thinking and problem solving.

Books:

The primary text for this course is a freely available online textbook called Think Python: How to Think like a Computer Scientist. We will be using the interactive version of the text that is available through Runestone Academy at https://runestone.academy. Each student enrolled in this course will automatically be enrolled in the interactive textbook; I will distribute this information on the first day.

Students are expected to work through the readings and answer the embedded questions for each chapter. In addition, some of the assignments will be in the form of questions in the Runestone textbook.

Canvas:

All materials for this course, including assignments, lecture notes, sample programs, and supplemental materials, will be in Canvas. You may access Canvas by signing into canvas.american.edu (which will redirect you to american.instructure.com). I will organize the “home” page for the Canvas as a set of weekly modules. I suggest that you go to this home page first whenever you have questions about the class. This material will be updated constantly as we work through the semester. Your registration in the course will cause this course to show in Canvas. The Canvas page for this class will be shared between all students.

Hardware/Software: 

You must have a functioning computer (laptop or desktop) with a standard operating system (Windows, Linux or MacOS) to use during class and for all assignments. This computer may NOT be a Chromebook, iPad, or similar web-based system. If you do not have a functioning computer with a standard operating system, there are ways to borrow one from AU for the semester; please let me know and contact your advisor ASAP to start this process. At the start of the semester, you must install Python 3 (the Python language interpreter) and the Anaconda, notebook & Spyder development environment we are using in this class) on your system. Detailed instructions for installing the software were sent out in an email before class started and are on Canvas under Course Resources. There are separate instructions for Windows, Linux users and macOS users.

Attendance:

Attendance is a required part of this course and is part of your final grade! Please come to class on time, ready to learn, and with your computer charged up! Attendance is taken at every class meeting. The in-class activities are an essential part of the course, and you are unlikely to truly understand the material without attending classes and engaging with the lectures. Please make a sincere effort to be present at every class, even if you don’t feel like it. “Showing up” is an important life skill.

Exams:

There will be two midterm exams and one final exam in this course. You MUST take all three exams to pass the course, regardless of your grades on other assignments. Midterm exams are held during class periods (see calendar) and final exams are held according to the schedule published by the university and in the schedule below.

Exams are typically closed-book, time-limited, and a combination of Canvas questions and on-paper questions. Code-writing for exams is done with paper and pencil. This is not accidental; the ability to write code by hand is a very important skill for anyone who expects to work with code on the job or apply for jobs that require coding skills.

Academic Integrity:

It is extremely important that all students in this course hold themselves to the highest standards of academic integrity. This means that you do not share or copy another person’s code or solutions to problem sets, you do not access unauthorized websites or course materials during exams, and you do not take credit for work that is not your own.

Writing code, like writing essays or musical compositions, is a creative process. Just like with essays and compositions, copying someone else’s work, or using AI to generate your solution, is plagiarism. When first approaching a programming project, you can discuss general ideas about how to approach the problem with your peers, you can consult course materials and sample programs from class, and you can ask the instructor or TAs for help. AT NO TIME should you copy code from someone else, from AI-generated sources, or from internet sources (rearranging lines of code or changing variable names in copied code is still plagiarism). Every programming assignment in this course is designed to reinforce topics covered in class and is explained in the (usually quite detailed) assignment description. If you find yourself looking for resources that are not part of the class to complete an assignment, you are almost certainly on the wrong path; please come talk to me!

The Academic Integrity Code for American University maybe found at this link; every student should review this document at the start of every semester. Students who are believed to have violated the Academic Integrity Code will be referred to the Academic Integrity Code Administrator for the College of Arts and Sciences, who, possibly along with an adjudication panel, will determine if a violation has occurred and what sanctions should result. Sanctions are often quite severe; a typical sanction is an F for the course and a notation on the transcript, and, in particularly egregious cases, can include suspension or dismissal from the university. It is NEVER worth it to violate the Academic Integrity Code. If you have any questions or concerns about these matters, please come to me directly.

Course Schedule: 

The tentative schedule for the course is listed below; some adjustments will inevitably occur as the semester progresses. Please check Canvas for detailed information, lecture notes, and assignments. 

WeekDateTopicsReading 
1Monday, August 28, 2023Wednesday, August 30, 2023Thursday, August 31, 2023Intros, Hardware and software, Getting started with Python, Variables, Types, Mathematical Operations and functions, Order of OperationsCh 1: General Introduction Ch 2: Python Data
2Monday, September 4, 2023Wednesday, September 6, 2023Thursday, September 7, 2023Introduce Strings, Writing Functions, Parameters, Arguments, range functionCh 3: Debugging Ch 4: Turtle Graphics (Interface/Program Design)
3Monday, September 11, 2023Wednesday, September 13, 2023Thursday, September 14, 2023More functions, conditional return statements, organizing functionsCh 5: ModulesCh 6: Functions
4Monday, September 18, 2023Wednesday, September 20, 2023Thursday, September 21, 2023Conditionals, if/elif/else statements, nested conditionals, boolean values, combining boolean expressions with and/or, short circuit evaluation, deMorgan’s lawCh 7: Selection (if/else)
5Monday, September 25, 2023Wednesday, September 27, 2023Thursday, September 28, 2023Review / Midterm/Next topics intro – IterationsCh 8.1-8.4: Iteration
6Monday, October 2, 2023Wednesday, October 4, 2023Thursday, October 5, 2023Iteration: while loops, iterating over input, iterating over a string, for loops, loop algorithms and techniquesCh 8.5-8.10: IterationCh 9: Strings
7Monday, October 9, 2023Wednesday, October 11, 2023Thursday, October 12, 2023Lists: Creating, Accessing, List Operations, List Algorithms, Using Lists, Lists as TablesCh 10.1 to 10.14: Lists
8Monday, October 16, 2023Wednesday, October 18, 2023Thursday, October 19, 2023More on ListsCh 10.15 to 10.26
9Monday, October 23, 2023Wednesday, October 25, 2023Thursday, October 26, 2023FilesCh 11.1 to 11.6: Files
10Monday, October 30, 2023Wednesday, November 1, 2023Thursday, November 2, 2023Review/Midterm
Next topics intro – Tuples
11Monday, November 6, 2023Wednesday, November 8, 2023Thursday, November 9, 2023TuplesCh 10.27 to 10.29
12Monday, November 13, 2023Wednesday, November 15, 2023Thursday, November 16, 2023Dictionaries, Exception HandlingCh 12: DictionariesCh 13: Exceptions
13Monday, November 20, 2023Wednesday, November 22, 2023Thursday, November 23, 2023Recursion, Sorting and Searching, Start Classes and ObjectsCh 16: Recursion(PDF) Sorting and SearchingCh 17: Classes and Objects
14Monday, November 27, 2023Wednesday, November 29, 2023Thursday, November 30, 2023overloading, polymorphismObject Oriented Programming, Inheritance, Data EncapsulationCh 18: Classes and Objects Digging DeeperCh 19: Inheritance
15Monday, December 4, 2023Wednesday, December 6, 2023Thursday, December 7, 2023Final review – Final exams

Grading Scale:

The grading scale will be as follows:

Programming Assignments/Projects20 %
Problem Sets and Small Assignments25 %
Attendance5 %
Midterm 115 %
Midterm 215 %
Final20 %
TOTAL100 %

Academic Support:

In addition to the TA and instructor office hours, AU students taking CSC-148 may access free one-on-one course tutoring through the Peer-Assisted Student Support (PASS) Program. 

For more information about PASS tutoring, go to this link.

Accessibility and Accommodations:

American University is committed to providing equal access to students with a documented disability. If you are a student with a documented disability who receives accommodations through the Academic Support and Access Services Center, please email your accommodations letter to me as soon as possible so I can ensure that you receive the accommodations that you require. Disability accommodations can range from very simple (e.g., extended time on an exam) to more complex (adaptive technology). I am happy to meet with you to discuss your accommodations as needed. Students who receive disability accommodations may choose to take their exams at the Academic Support and Access Services Center (ASAC); however, most extended time accommodations can be provided in the classroom. Affected students should speak with me directly.

If you do not have an accommodations letter but believe that you have a qualifying disability, you must first contact the American University Academic Support and Access Services Center at this link

ASAC will guide you through the process of determining eligibility for accommodations, and, if you are eligible, providing you and your professors with resources and documentation. Please note that determination of eligibility can take several weeks, so it is in your best interest to act on that as soon as possible.

Changes to enrollment:

I hope that all here will get a lot out of this course and will find it interesting and enjoyable. However, I know that unexpected situations sometimes arise and students find themselves in the position where they must drop a course or take a leave of absence during the term. Please remember that, in order to change your enrollment in any course, you must submit a formal drop request through the registrar’s office. If you leave a course but do not drop by the appropriate deadline, your grade will be recorded as an F. Please check the University calendar for the various add/drop dates that might affect your decision.

In addition, if, for any reason, you choose to drop this course during the term, please send me an email to let me know (the registrar does not notify me of dropped students). If you abruptly disappear without notice, I may be sufficiently concerned to start sending out alarms to various well-meaning social workers and academic administrators at the University, who will undoubtedly be annoying to you and your next of kin. I do not wish to embarrass anyone, so please keep me informed about any decisions that you make.

The semester can go very quickly; don’t fall behind! Attend class, keep up with the work and the reading, and utilize office hours (mine as well as the TAs) if you find anything confusing. If you do find yourself in a difficult situation, please reach out IMMEDIATELY to see if anything can be done to get you back on track.

Community Considerations:

All members of the Computer Science department at American University are committed to improving diversity, equity, and inclusion in the field of computing, as well as supporting the wellness and mental health of our students. It is essential that all members of the course community, including the instructor, TAs, and students, work together to create a supportive, inclusive environment that welcomes all students, regardless of their race, religion, ethnicity, gender, sexuality, or socioeconomic status.

All participants in this course deserve to be and should expect to be treated with respect by other members of the community. In order to foster a welcoming environment, students of this course are expected to exercise consideration and respect in their speech and actions, including listening to opposing perspectives, and refrain from demeaning, discriminatory, or harassing behavior and speech.

I understand that student life can be at times difficult, both mentally and emotionally. If you are struggling with mental health issues that are affecting your classroom performance, please reach out if there is anything I can do to support and accommodate you. In addition, if you or someone you know is in distress and urgently needs to speak with someone, please contact the Crisis Intervention Center at 202-885-7979, 24 hours per day, wherever you are located.