## CSCI 150Foundations of Computer Science

#### LECTURE 01

MWF 8:10am - 9:00am (A1)

Cabe Theater

##### Instructor

Dr. Brent Yorgey
yorgey@hendrix.edu
(501) 450-1377
Office Hours

#### LAB L1

W 1:35pm - 4:25pm (L8)

##### Location

Bailey Lab / Microsoft Teams

##### Instructor

Dr. Gabriel Ferrer
ferrer@hendrix.edu
(501) 450-3879
Office Hours

#### LAB L2

R 1:35pm - 4:25pm (L9)

##### Location

Bailey Lab / Microsoft Teams

## TAs

• Connor Escajeda (Tuesday 7-9pm)
• Zoie Keys (Wednesday 7-9pm)

# Overview

Introduction to solving computational problems, including the fundamentals of computer programming. Topics include imperative programming constructs (variables, loops, conditionals, functions, recursion), basic object-oriented constructs (classes, objects), and some fundamental algorithms and data structures (dictionaries, arrays, linked lists). Student learn these concepts through studying the Python programming language.

## Learning Goals

Upon completing this course, our goal is for you to be able to:

• Build computer programs to:
• Effectively solve realistic problems.
• Organize, analyze, and summarize realistic data sets.
• Read, understand, and explain a computer program.
• Understand and explain computation through:
• Thinking logically and precisely.
• Making and testing hypotheses.
• Use modular components to decompose problems and assemble solutions.
• Create abstract, generalized models from specific, complex examples.

# Calendar

Date Topic Lecture notes & code HW and Links

W 20 Jan Intro to CS
F 22 Jan Intro to CSCI 150; Algorithms and errors Lecture notes HW: Minecraft by hand; Survey

M 25 Jan Intro to Python (math, variables) Kaggle notebook
W 27 Jan Intro to Python (functions) Kaggle notebook
F 29 Jan Booleans Kaggle notebook HW: Boolean practice

M 1 Feb Conditionals Kaggle notebook
W 3 Feb Tracing I Kaggle notebook HW: Tracing & conditional practice
example 1 example 2
F 5 Feb No class

M 8 Feb Binary and information encoding Lecture notes Quiz: tracing & conditionals
HW: Practice exam
W 10 Feb Exam 1 review Kaggle notebook
converting to binary
logic table
tracing
F 12 Feb Exam 1

M 15 Feb Pycharm & I/O; while loops Intro.py Project 1 assigned
while_intro.py
[No video due to Teams bug]
W 17 Feb While loops while_intro.py
F 19 Feb Functions and stack tracing functions.py HW: Function and loop reading practice
Tracing example

M 22 Feb Function abstraction hilow.py
W 24 Feb No class
F 26 Feb String & loop practice string-practice.py HW: CodingBat string and loop practice

M 1 Mar Lists 1 lists.py
W 3 Mar Lists 2 lists.py
F 5 Mar List processing examples lists.py HW: CodingBat List and Loop practice

M 8 Mar For loops for_loops.py
W 10 Mar For loops: index ranges for_loops.py
F 12 Mar Mutability & references heap.py HW: CodingBat more loop practice

M 15 Mar Dictionaries dictionaries.py HW: Practice exam
W 17 Mar Dictionaries, file I/O files.py
dictionaries.py
F 19 Mar Exam 2 review

M 22 Mar Exam 2 (no class meeting)
W 24 Mar No class
F 26 Mar Project 2 demo project2_demo.py Project 2 assigned

M 29 Mar Introduction to classes and objects cake.py
W 31 Mar Classes & objects: Cake cake.py
F 2 Apr Classes & objects: Traffic lights traffic.py

M 5 Apr No class
W 7 Apr PyGame example paint.py
F 9 Apr PyGame example paint.py

M 12 Apr Introduction to recursion recursion.py
W 14 Apr Recursion (trees) tree.py
F 16 Apr Recursion (drawing fractals) fractals.py

M 19 Apr Prof. Wilson guest lecture on data analysis
W 21 Apr Prof. Wilson guest lecture on data analysis
F 23 Apr No class

M 26 Apr TBA
W 28 Apr TBA
F 30 Apr Project workshop

M 10 May Final project presentations (2-5pm)

# Coursework

Each student has four late days to spend throughout the semester as they wish. Simply inform the instructor any time prior to the due date for an assignment that you wish to use a late day; you may then turn in the assignment up to 24 hours late. Multiple late days may be used on the same assignment. There are no partial late days; turning in an assignment 2 hours late or 20 hours late will both use 1 late day. Note that late days are intended to cover both normal circumstances (you simply want more time to work on the assignment) and exceptional circumstances (you get sick, travel for a game or family obligation, etc.). After you have used up your late days, late assignments will receive at most half credit.

## Homework and Quizzes: 140 points

# Name Assigned Due
0 Survey W Jan 20 M Jan 25
1 Minecraft by hand F Jan 22 W Jan 27
2 Boolean practice F Jan 29 W Feb 3
3 Function and loop reading practice F Feb 19 W Feb 24
4 CodingBat String and Loop practice F Feb 26 W Mar 3
5 CodingBat List and Loop practice F Mar 5 W Mar 10
6 CodingBat more loop practice F Mar 12 W Mar 17

There will often be short homework assignments to be completed over the weekend, assigned on Friday and due Wednesday, sometimes with a corresponding quiz at the beginning of class on Wednesday.

Homework will generally be turned in electronically via this Google form.

• If you type a homework using something like Word or Pages, you should export a PDF (this is typically an option under the “File” menu).

• You may also write your homework solutions on physical paper and scan them using an app such as Genius Scan which can export your document as a PDF.

## Labs: 260 points

# Name Assigned Due
0 Minecraft Jan 20-21 Jan 27-28
1 Kepler, Newton, Einstein Jan 27-28 Feb 3-4
2 Diagnosing Heart Disease Feb 3-4 Feb 10-11
3 This Day in History Feb 10-11 Feb 17-18
4 Guess My Number Feb 17-18 Feb 24-25
5 Mutation is the Word Feb 24-25 Mar 3-4
6 Todo Manager Mar 3-4 Mar 10-11
7 Caesar’s Secrets Mar 10-11 Mar 17-18
8 Sentiment Analysis Mar 17-18 Mar 31-Apr 1
9 Water Jugs Mar 31 Apr 7-8
10 Graphics and Animation Apr 7-8 Apr 14-15
11 Enron’s Secrets Apr 14-15 Apr 21-22

Much of your experience with programming in this course will be through weekly labs. Each lab will be assigned in lab with time allotted to work through the materials, and will be due by the start of the following lab. All labs are weighted equally within the lab portion of your final grade.

On these labs, you will work with a partner on the lab assignments. Their name must be listed on any code you hand in as joint work. Each partner should submit their own solution to the assignment.

Lab attendance is required. For this semester, labs will meet virtually online in Microsoft Teams.

## Projects: 350 points

# Name Points Assigned Due
1 Civic Assistance Q/A System 50 Feb 15 Feb 22
2 Word Games 100 Mar 26 Apr 9
3 Final Project 200 April 15 May 10

You will have three projects in this course. These projects will cover concepts we have discussed in class and in labs, and will be due approximately two to three weeks after they are assigned.

You must work individually on the projects. You may discuss concepts and ideas with your classmates, but the code you turn in must be your own. You will be graded not only on correctness, but also technique, documentation and evaluation of your solution. Further details on the grading standards and handin instructions for each project will be given when they are assigned.

## Exams: 250 150 points

There will be three two in-class exams, the first worth 50 points and the second worth 100 points. They will consist of short answer questions along with writing and debugging code.

There is no final exam; you will complete a final project instead, as described above under Projects.

800-900 A
700-799 B
600-699 C
500-599 D
0-499 F

## Expectations

Although you and I play different roles in the course, we both have your learning as a common goal. There are things I expect from you as a student in the course, but there are also things you can expect of me as the course instructor and facilitator.

If I am not fulfilling my responsibilities outlined below, you are welcome (and encouraged!) to call me out, perhaps via the anonymous feedback form. I will also initiate a conversation if you are not fulfilling yours. However, none of us will meet all of the expectations perfectly—me included!—so it’s also important that we have grace and patience with one another.

What I expect from you What you can expect from me
Communication
• Check your email and Teams for occasional course announcements.
• Let me know via email or Teams message if you will need to miss class for some reason.
• Let me know as soon as possible if you feel you are struggling, would like extra help, or have something going on that will affect your engagement in the course or your ability to fulfill your responsibilities.
• Clearly communicate expectations, assignment details and dates, and grading standards.
• Return grades and feedback on submitted work within one week of submission.
• Respond to emails within 24 hours.
Preparation
• Come prepared to fully engage in class meetings, with distractions minimized, to the best of your ability.
• Spend time outside of class actively practicing unfamiliar or shaky concepts or skills (not just reading over notes).
• Have a concrete plan for how we will spend each class meeting, prepared to lead you through the plan.
Engagement
• Make myself available to meet outside of class, and give you my full attention during a meeting.
• Be committed to your learning, open to feedback and willing to respond in substantive ways to your suggestions or concerns.

## Attendance

Attendance in this class is not required as part of your grade. However, I do expect you to attend and appreciate knowing in advance if you will need to miss class.

If you have chosen to attend class in person, you are expected to do so consistently; you may not decide to attend remotely some days just because you feel like it. However, there are legitimate reasons for attending remotely, such as feeling ill or travelling unavoidably.

## Disabilities

If you have a documented disability or some other reason that you cannot meet the above expectations, and/or your learning would be best served by a modification to the usual course policies, I would be happy to work with you—please get in touch (via Teams or email)! The course policies are just a means to an end; I don’t care about the policies per se but I do care about you and your learning.

It is the policy of Hendrix College to accommodate students with disabilities, pursuant to federal and state law. Students should contact Julie Brown in the Office of Academic Success (505.2954; brownj@hendrix.edu) to begin the accommodation process. Any student seeking accommodation in relation to a recognized disability should inform the instructor at the beginning of the course.

## Diversity and Inclusion

Hendrix College values a diverse learning environment as outlined in the College’s Statement on Diversity. All members of this community are expected to contribute to a respectful, welcoming, and inclusive environment for every other member of the community. If you believe you have been the subject of discrimination please contact Dean Mike Leblanc at leblanc@hendrix.edu or 501-450-1222 or the Title IX Coordinator Allison Vetter at titleix@hendrix.eduor 501-505-2901. If you have ideas for improving the inclusivity of the classroom experience please feel free to contact me. For more information on Hendrix non-discrimination policies, visit hendrix.edu/nondiscrimination.