Course Description
This course will provide an introduction to computational thinking, programming, and the field of computer science in general. Computer science is fundamentally a study of problem solving, not simply computers (or computer programs) themselves. We will consider questions such as (1) what defines computer science, (2) how do we design an algorithm to solve a problem, and (3) how do we translate an algorithm into a computer program?
Over the course of the semester, students will learn the fundamentals of programming using the Python programming language and write a variety of programs during weekly lab assignments and larger projects. Labs will reinforce concepts presented in class that are fundamental to computer science and computation across many fields. Specific topics covered include variables, functions, conditionals, loops, arrays, recursion, and object-oriented programming, but then we will cover more advanced Python programming.
The course comes in two basic parts. In the first part we will be doing a
very fast introduction to Python. Essentially we will cover the material from
1101 over the course of about six to eight weeks. In the second part of the
course we will focus on more advanced parts of Python, such as visualization,
especially in the service of analyzing data.
Prerequisites: Previous programming experience.
Distribution: This course fulfills the MCSR distribution requirement by teaching students to employ programming and algorithmic problem solving. These skills are broadly applicable across many fields of study.
People
Instructor: Eric Chown
Email:
Phone: 207-798-3084
Office: Searles 221
Office Hours: Tues 2:30-4/Wed, 1:30-3:00, or by appointment.
TAs / QR Mentors: Zoe Aarons, Bo Bleckel, James Little, Kyle Morrison, Mackenzie Schafer, Brooke Solomon, Becca Vanneman, Erik Wurman
Course Requirements
Attendance during class and lab sessions, completion of weekly short lab assignments and longer projects, and one exam. Evaluation will be as follows:
- Lab Assignments: 30%
- Programming Projects: 30%
- Exam: 20%
- Final Project: 20%
Regular class participation will contribute positively towards your grade, particularly in borderline cases.
Most labs and and all projects are not designed to be completed during scheduled lab meetings and will require significant work outside of class to complete. Labs are to be submitted using the CodeRunner system.
Late Policy: As concepts covered in the course are highly cumulative, it is crucial that you do not fall behind on assignments. In general, late submissions are not accepted unless an extension is granted by the instructor well in advance of the due date (not the night of the deadline!). Plan ahead and don't wait until the last minute to start working!
Discussion Forum
We will use Piazza to facilitate discussion outside of class. In general, you should prefer posting to Piazza over sending me email, as it will allow your classmates to both see and answer your questions (though you can also post privately such that only instructors can see your question).
Here is the CS 1103 Piazza page.
Textbook (optional)
P. Gries, J. Campbell, and J. Montojo. Practical Programming: An Introduction to Computer Science Using Python 3, 2nd edition (2013). Available at Amazon or elsewhere.
The textbook is optional but will roughly follow the schedule for the first half of the course.
Class Information
All classes (lab or otherwise) meet in Searles 128.
Class Times:
Tuesday 2:30 PM - 4:00 PM
Thursday 2:30 AM - 4:00 PM, 1:00 PM - 2:25 PM
Final Exam
December 13, 9:00 AM - 12:00 PM, Searles 128 (held for final project presentations)
Electronic Device Policy
Computers will be extensively used for in-class exercises, labs, and exams. Use of personal laptops is permitted for these or other class-related purposes. Cell phones should be silenced and put away during class to avoid disruptions.
No electronic devices, including computers, phones, or calculators, are permitted during exams unless specifically indicated by the instructor.
Collaboration Policy and Honor Code
Please review the Bowdoin Computer Science Collaboration Policy. You are responsible for understanding and adhering to this policy! We will discuss specifics as they apply to this course in class, but generally Labs are Level 1, Projects are Level 2, and Exams are Level 3.
Class Meetings
Date (tentative) |
Topic |
August 31 | Introduction, Python Basics |
September 5 | Strings |
September 7 | Conditionals, Objects and Methods |
September 12 | Lists |
September 14 | Lists, Iteration |
September 19 | Iteration, Files |
September 21 | Sets and Dictionaries |
September 26 | Exceptions |
September 28 | Dictionaries |
October 3, 5 | Recursion |
October 12, 17, 19 | Object Oriented Programming |
October 24, 26 | Regular Expressions |
Nov-Dec | Advanced Topics including visualization, data analysis |