CSCI 150
Foundations of Computer Science

background image from slidebackground.com

LECTURE 01

MWF 9:10am - 10:00am (A2)

Location

MC Reynolds 110

Instructor

Prof. Lars Seme
seme@hendrix.edu
(501) 450-1256
Office Hours

LECTURE 02

MWF 11:10am - noon (A4)

Location

MC Reynolds 315

Instructor

Dr. Brent Yorgey
yorgey@hendrix.edu

Office Hours

LAB L1

W 1:10pm - 4:00pm (L8)

Location

Bailey Lab

Instructor

Dr. Brent Yorgey
yorgey@hendrix.edu

Office Hours

LAB L2

R 1:10pm - 4:00pm (L9)

Location

Bailey Lab

Instructor

Dr. Brian Delevan
delavan@hendrix.edu

Office Hours


TA Office Hours (TBD)

Monday Tuesday Wednesday Thursday
       

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:

Resources

Optional Resources


Calendar

Module Date Topic & Notes Module Components Projects
  W 27 Aug Introduction to Computer Science stream Lab 0: Minecraft  
      CSCI Student Survey  
  F 29 Aug Algorithms and Errors    
         
  M 1 Sep No class - Labor Day    
1: Math & Variables in Python W 3 Sep Python Lab 1: Kepler, Newton, Einstein  
    Math & Variables HW 1: Math & Variables  
  F 5 Sep Functions    
         
2: Booleans & Conditionals M 8 Sep Booleans    
  W 10 Sep Conditionals Lab 2: Heart Disease  
      HW 2: Booleans & Conditionals  
  F 12 Sep Tracing Quiz 1: Math & Variables  
         
3: Tracing and the Stack M 15 Sep More tracing & the function stack    
  W 17 Sep Tracing with the function stack Lab 3: This Day in History Project 1 assigned
      HW 3: Tracing  
  F 19 Sep Stack tracing Quiz 2: Booleans & Conditionals  
    PyCharm installation    
         
4: While Loops M 22 Sep I/O    
    Introduction to while loops    
  W 24 Sep While loops Lab 4: Guess My Number  
      HW 4: While Loops  
  F 26 Sep While loops Quiz 3: Tracing  
         
5: Strings M 29 Sep Strings    
  W 1 Oct Strings and Loops Lab 5: Doublets Project 1 Due
      HW 5: Strings  
  F 3 Oct Strings and Loops Quiz 4: While Loops  
         
6: Lists M 6 Oct Lists    
  W 8 Oct List processing examples Lab 6: To Do Manager  
      HW 6: Lists  
  F 10 Oct Function abstraction    
         
7: File I/O M 13 Oct File I/O   Project 2 assigned
  W 15 Oct File I/O HW 7: File I/O  
    HW 6 review + quiz Quiz 6: Lists  
      No Lab 7 - Fall break  
  F 17 Oct No class - Fall break    
         
8: For Loops M 20 Oct For loops    
  W 22 Oct Common loop patterns Lab 8: Caesar’s Secrets  
      HW 8: For Loops  
  F 24 Oct Mutability and the heap Quiz 7: File I/O  
         
9: Dictionaries M 27 Oct Dictionaries    
  W 29 Oct Dictionaries Lab 9: Asteriskbucks Project 2 due
      HW 9: Dictionaries  
  F 31 Oct Final Project discussion Quiz 8: For Loops Final project assigned
         
10: Classes M 3 Nov Classes    
  W 5 Nov Class & object examples Lab 10: Water Jugs  
      HW 10: Classes  
  F 7 Nov Class & object examples Quiz 9: Dictionaries  
         
11: PyGame M 10 Nov PyGame animation    
  W 12 Nov Classes and PyGame Lab 11: Faces  
      No homework  
  F 14 Nov Classes and PyGame Quiz 10: Classes Final project design due
         
12: Recursion M 17 Nov Recursion    
  W 19 Nov Recursion: trees Lab 12: Enron’s Secrets  
      HW 12: Trees & Recursion  
  F 21 Nov Recursion: applications No Quiz 11  
         
  M 24 Nov Binary & information encoding    
  W 26 Nov No class - Thanksgiving    
  F 28 Nov No class - Thanksgiving    
         
  M 1 Dec Generative AI    
  W 3 Dec Project workshop Lab: Final project workshop  
  F 5 Dec Retrospective Quiz 12: Trees & Recursion  

Coursework

Modules

Most of your work in this course will be organized around a series of twelve modules, each module typically lasting one week and focusing on a particular topic. Most modules will have three components:

In order to get credit for a module, you must complete the lab and receive credit for the quiz. If you do not receive credit for a quiz, you may retake a new version of the quiz after coming to office hours with the relevant completed homework assignment; see below for more details.

The exceptions are:

Labs

Much of your hands-on experience with programming in this course will be through weekly labs. During each scheduled lab period, you will spend time working with an assigned partner on a lab exercise, with the help of the lab instructor and TAs. The lab is due by the start of the following lab.

Lab completion and grading

Each lab consists of a series of milestones. At the start of each lab, you will receive a sheet of paper listing the milestones for that lab. As you achieve each milestone, you will demonstrate to the instructor or TA that you have met the milestone, and they will record this achievement on your checklist. If you complete the lab during the lab period, hand your checklist to your lab instructor before you leave the lab. If you require additional time beyond the lab period to complete the lab, either the instructor or the lab TA can check off the remaining milestones during office hours. You can then submit the completed checklist to the instructor at the start of the next lab.

You will work with a partner on each lab assignment. Each partner will have their own milestone checklist. If you and your partner do not complete the milestones during the lab period, you should find time outside of lab to work together to complete it during the following week. If this is not possible for some reason, talk to one of the course instructors. TAs can only check off lab milestones if both partners are present.

Late lab submission

Completed labs are due by the start of the following lab (i.e. typically in one week, sometimes two). If you cannot submit a lab by the due date, you may request an extension by sending a message to one of your instructors, with a specific new deadline by which you will submit the lab. In order to turn in a lab late (i.e. after either the original deadline or your agreed, new deadline if you requested an extension), you must first schedule an office hours meeting with an instructor to discuss your progress in the course.

Lab attendance

Lab attendance is required. If you know you must miss a lab due to sports travel, illness, or some other reason, you should contact your lab instructor before lab (or, in the case of emergencies, as soon as possible). Your lab absence will then be considered excused. However, you are still responsible for completing the lab activity on time. If you wish, your lab instructor may be able to pair you with another student who was absent; or you may complete the lab on your own. In either case, you are still welcome to get help on the lab from an instructor or TAs.

Labs take place in the Snoddy Computer Lab, in the Bailey Library. As you go through the exterior door of the library, turn immediately to your left and enter the Snoddy Academic Resource Center:

Continue through the door at the far end of the hall (just visible in the above picture) into the first computer lab, and then enter the second lab at the back.

Homework

Each week, you will be given a homework assignment, typically due on Monday. These assignments will help you individually practice and solidify the skills and concepts from a given module, and prepare you to take the quiz.

If you turn in your homework in class on Monday, it will be checked and returned to you with feedback on Wednesday, before the corresponding quiz on Friday.

Homework assignments do not directly contribute to your final grade in the course. However, they will prepare you for the quizzes; in addition, if you do not initially receive credit on a quiz, you must complete the corresponding homework assignment before you may retake the quiz (see below).

Quizzes

A short quiz will be given at the end of class on most Fridays. Each quiz will contain one or more problems or short-answer questions that should be solvable within 10 minutes or so.

Quizzes are graded credit/no credit.

If you do not receive credit for a quiz, you may retake it as follows:

Missed quizzes may be made up on a subsequent quiz day (there will usually be sufficient time allotted to take more than one quiz), or you may book an office hours appointment to take a missed quiz.

Projects

Projects give you an opportunity to synthesize multiple concepts and skills from class into a working whole, as well as an opportunity to engage your creativity.

# Name Assigned Due
1 Expert System 9/17 10/1
2 Word Games 10/13 10/29
3 Final Project 10/31 12/12

Each project will have a detailed specification explaining the required criteria for a successful project. Each project will be graded out of 3 points:

Project submission

You may ask for an extension at any time prior to the deadline for projects 1 and 2: just let an instructor know that you would like an extension, and specify your new deadline. A project submitted by the new, extended deadline will still be considered on time.

The first such request for a given project will be automatically granted. Typically, only one extension will be given for each project; however, requests for additional extensions will be considered on a case-by-case basis.

Extensions on the final project will only be granted in exceptional circumstances.

Project grading

Projects that do not receive full credit will be returned with detailed feedback explaining what you must revise or improve to receive a higher grade, along with a new deadline for the revisions.

There will not be an opportunity to revise the final project. However, you are welcome to visit office hours to get feedback on your final project along the way; the grade your get on the final project should not be a surprise.

Attendance

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

Grading

This information is summarized in the table below:

Grade Modules Lab unexcused absences Project points
A 11 ≤ 1 8
B 9 ≤ 2 6
C 8 ≤ 3 4
D 6 ≤ 3 3

Commitments

It is my ultimate goal for this course, and my teaching, to develop your academic skills, advance your learning of computer science concepts, and support the liberal arts in general. To do so will require commitments from myself and from you toward meeting this goal.

Active Participation

I will be prepared and on time for class each day, ready to use class time to help you understand the course material. I will respectfully listen to, understand, and answer questions asked in class.

You are expected to attend class and actively participate in discussions every day, answering questions, asking questions, presenting material, etc. Your participation will be respectful of your classmates, both of their opinions and of their current point in their educational journey, as we each approach the material with different backgrounds and contexts.

Constructive Feedback

I will keep office hours and be available for outside appointments, and respond to emails within one business day (not including weekends). I will provide feedback on group presentations within one day. For exams, projects, and homeworks, I will provide graded feedback within two weeks.

You are encouraged to provide constructive comments for improving this course for furthering your learning throughout the semester. There will be an opportunity for anonymous course feedback at the end of the term, in which I hope you all participate. Through your feedback I can improve this course and others for future students.

Academic Integrity

I will abide by the above syllabus and grade your work fairly.

As stated in the Hendrix Academic Integrity Policy, all students have agreed to adhere to the following principles:

  • All students have an equal right to their opinions and to receive constructive criticism.
  • Students should positively engage the course material and encourage their classmates to do the same.
  • No students should gain an unfair advantage or violate their peers' commitment to honest work and genuine effort. It follows that any work that a student submits for class will be that student's own work. The amount of cooperation undertaken with other students, the consistency and accuracy of work, and the test-taking procedure should adhere to those guidelines that the instructor provides.
  • Members of the Hendrix community value and uphold academic integrity because we recognize that scholarly pursuits are aimed at increasing the shared body of knowledge and that the full disclosure of sources is the most effective way to ensure accountability to both ourselves and our colleagues.

You may not use any Python features we have not yet covered in class, unless you include a comment explaining where you learned about it and why you decided it would be helpful or appropriate to use in the given circumstance.

All use of generative AI systems for any purpose in this class is strictly forbidden. Any use or suspected use of generative AI will be considered a violation of academic integrity.

More details of our departmental stance on integrity can be found in the Hendrix Computer Science Academic Integrity Policy.

Learning Accomodation

I will make this classroom an open and inclusive environment, accommodating many different learning styles and perspectives.

It is the policy of Hendrix College to accommodate students with disabilities, pursuant to federal and state law. Students should contact Mr. Blake Draper in the Office of Advising & Academic Success (AcademicSuccess@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 Donna Eddleman at eddleman@hendrix.edu or 501-450-1222 or the Title IX Coordinator Danielle Crowell at crowelld@hendrix.edu or 501-450-1296. For more information on Hendrix non-discrimination policies, visit hendrix.edu/nondiscrimination.

Physical and Mental Health

I am willing to work with you individually when life goes off the rails.

Coursework and college in general can become stressful and overwhelming, and your wellness can be impacted when you least expect it. You should participate in self-care and preventative measures, and be willing to find support when you need it.

  • The Office of Counseling Services welcomes all students to see a counselor in a private and safe environment regardless of their reasons for making an appointment. Counseling services are available to all Hendrix students at no cost.
  • Student Health Services provides free healthcare to Hendrix students. Services are provided by an Advanced Practice Registered Nurse (APRN) in collaboration with a local physician.

The Offices of Counseling Services and Student Health Services are located in the white house behind the Mills Center for Social Sciences at 1541 Washington Avenue. Your health is important, and I care more about your health and well-being than I do about this class!