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-725-3084
Office: Searles 221
Office Hours: TBA, or by appointment.
TAs / QR Mentors: Kyle Morrison is the TA assigned to 1103. In addition, the 1101 TAs can also provide help, especially with labs, but less so with projects. They are: Katie McDonough, Mackenzie Schafer, Brooke Solomon, Isaac Kabuika, Rebecca Vanneman, Kevin Lane, and Waverly Harden. Office hours will
be announced on Piazza.
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: 40%
- Exam: 20%
- Final Project: 10%
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. Projects will be submitted using GitHub or Blackboard.
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, Thursday 10:05 AM - 11:30 AM
Wednesday 11:40 AM - 1:05 PM
Final Exam
December 17, 8:30 AM - 11:30 AM, 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 30 | Introduction, Python Basics |
September 4 | Strings |
September 6 | Conditionals, Objects and Methods |
September 11 | Lists |
September 13 | Lists, Iteration |
September 18 | Iteration, Files |
September 20 | Sets and Dictionaries |
September 25 | Exceptions |
September 27 | Dictionaries |
October 2, 4 | Recursion |
October 11, 16, 18 | Object Oriented Programming |
October 23, 25 | Regular Expressions |
Nov-Dec | Advanced Topics including visualization, data analysis |