Course Outline

Introduction to Computer Science 1: Programming and Computer Science

Professor Dr K Darcy Otto
Title Introduction to CS 1: Programming and Computer Science
Code CS 2139
Credits 4
Term Fall 2024
Times Mon/Thurs 10h00–11h50
Location Dickinson 117
Delivery Fully in-person
Contact Email
Office Hours Mon/Thurs 15h30–16h30, or by appointment

Description

Have you ever imagined speaking in the language of computers, and transforming your ideas into actions that computers can perform? This course is a gateway to discovering the art and science of programming, a crucial skill that serves as the backbone of computer science. But computer science transcends mere programming. Our actual aim is to nurture your ability to think like a computer scientist.

Computer scientists approach and solve problems using computational thinking. This is an essential skill in the modern age. No prior programming experience is necessary, making this course an ideal starting point for anyone wanting to venture into the realm of computer science, including those from liberal arts backgrounds who want to explore the interplay of technology and society.

This course will introduce you to foundational concepts such as functions and abstractions, data structures, and algorithm complexity, using the Python language. These topics serve as the building blocks for computer science, and pave the way for more advanced topics in the field. Through your exploration, you will not only learn to distinguish what computer science offers as a field, but also gain valuable insights into cutting-edge advancements that are driving innovation and transforming our world.

This course is followed by Introduction to Computer Science 2: Algorithms and Application.

Learning Outcomes

  1. Develop the ability to translate real-world problems into computer-executable solutions using elementary programming concepts.
  2. Grasp functions, scoping, and abstraction in order to structure complex ideas into logical, readable code.
  3. Understand data structures, and how to organize, store, and manipulate data within applications.
  4. Apply principles of algorithmic complexity in order to evaluate the performance of computational solutions.
  5. Acquire a foundation in programming that supports more advanced work in computer science and related subjects.

An overarching objective of this course is to help you develop as a student of the liberal arts. True students of the liberal arts are able to reflect on the context in which they live, and reason about what it means to live a meaningful and happy life. Thus, they are able to be more than just children of their own time. But this means we must be willing to put our ideas to the test, see our own errors, and develop intellectual courage and humility. It also helps not to take ourselves too seriously.

Readings

  • John V. Guttag. Introduction to Computation and Programming Using Python, third edition: With Application to Computational Modeling and Understanding Data, 3rd ed. Cambridge: The MIT Press, 2021. Available in the Dickinson reading room, and Crosset Library.

Evaluation

You may chose either Option A or Option B for a grading scheme. Option B adds a final project, and reduces the weight of the course meetings and oral examination.

Option A

Check-in Meetings 50% Exercises
Oral Examination 50% Comprehensive

Option B

Check-in Meetings 30% Exercises
Oral Examination 40% Comprehensive
Final Project 30% Subject to approval
  • Check-in Meetings: Several times during the term, you will meet me during office hours. I will ask you to show me your work from class, and you should be prepared to demonstrate and explain your exercise answers, as well as answer questions about concepts from the course.

  • Examination: The examination is comprehensive and will be a series of oral questions, related to the topics covered in the course.

  • Final Project: If you choose Option B, you will propose and complete a group project in coördination with the professor. A proposal must be approved in order to submit your final project.

  1. Class Schedule: Current schedule of readings and assignments
  2. Check-in Schedule: Editable spreadsheet
  3. Electronic Whiteboard: For information sharing during class
  4. Download Python
  5. Download VSCodium or Visual Studio Code
  6. Replit: Use python online

Additional Information

  1. This course outline is subject to arbitrary change. I shall announce any changes in class; if you are not present, you are still responsible for finding out what I announce.
  2. Late exercises or assignments will not be accepted without an acceptable medical or compassionate reason. Exercises or assignments are due according to deadlines articulated in class.
  3. You must attend classes regularly and on-time. Penalties for unexcused absences and for lateness will factor into the class grade. Three unexcused absences are grounds for a marginal pass, and four are grounds for failure, even if all your other work is good. Excused absences do not count towards these totals.
  4. The use of notebook computers or mobile devices is not permitted during class, except as explicitly allowed by the professor to do work directly related to some activity in class. You are expected to use analogue technologies (e.g., pencil and paper) to take notes, unless you have a special dispensation to use digital devices in class.
  5. The use of artificial intelligence in coursework is not permitted, except as explicitly allowed by the professor. You must fully cite your use of artificial intelligence if you use it.
  6. Office hours are first-come-first-serve, unless you have an appointment. If you request an appointment by email, please send me a selection of several times you are available.
  7. Please be aware of the college policies on class attendance, as well as academic and artistic ethics. You must declare any work you submit that is generated in part or whole by AI.
  8. If you are being graded, your mark in the course will be translated into a letter-grade, according to the following scale: A+ (90–100), A (85–89), A– (80–84), B+ (77–79), B (73–76), B– (70–72), C+ (67–69), C (63–66), C– (60–62), D (50–59), F (0–49). Your grade will not be otherwise curved or adjusted.