Introduction to Computer Science CSC 280 Fall 2014

Basic Info

Instructor: Prof. Bei Xiao (bxiao AT american.edu)
Teaching assistant: Alex Perepechko (ap1109a at student dot american dot edu.) Session 1
Leah Parent (lp4390a at student dot american dot edu ) Session 4
 
Time: Mon/Wed/Thurs 2:35-3:50 pm (Session 4)
Mon/Wed/Thurs 11:45-1 pm (Session 1)
Location: Anderson B-12
Office hours (Tentatively):
Dr. Xiao: Wednuesday 4-5pm, Thursday 4-5pm (SCAN 110) or by email appointment
Syllabus: syllabus.pdf
 
Course description: This course is an introduction to computer programming and art of computation to students with little background in programming. The goal of the class is however, beyound learning Python, but to help students develop the ability of computational thinking. Teaching is mostly achieved in in-class examples, discussions, quizzes, and programming exercises. In the first part of the class, students will learn basic syntax and programming methodologies (such as syntax, data types, control flows, and object-oriented programming basics) with Python. As the class advance, we will introduce algorithms such as numetric methods, sorting, searching, memorization. Computational concepts and techniques such as random sampling, exhaustive enumeration, bisection search, and dynamic programming will also be introduced. Homework assignments will also include implementing many fun games.
 
Textbook and materials:
  1. Think like a computer scientist, learning programming with Python. ( Required)
  2. Introduction to Computation and Programming Using Python. John Guttag. Spring 2013 edition. MIT Press.
Online resource:
  1. Offical Python Tutorial
  2. Learn Python The Hard Way
Prerequisites: High school algebra and interests in problem solving. Knowlege of basic calculus and basic probabilty will be plus.
 
Grading policy: 50% homework assignments, 20% mid-term exams, 20% final project, 10% class participation (including in-class exercises).
 
Homework policy:

Homework is all about programming and you will submit to blackboard. In the first class, I will pass out a handout code template of how to comment, name, and structure your code for homework assignment. Please follow the instructions strictly. If you name your code homework question1 without your name, it will not be graded. You must test your code on your computer. We will use libraries extensively.

Late penalty: the deadline of HW is the midnight eastern time of the due date. You can turn in one HW late for up to 48 hours with no penalty. The second/third late HW will automatically receive 50% reduction if received within the 48 hours after the deadline. After the 48 hours, the homework will not be graded and will receive zero points.

 
Attendance: We will do lots of live-programming, discussion, and quiz in class. Again, it is very much like learning a foreign language. Class participation is an important chance to practice your skills.
 
Computer and software You can either use the computer in the lab orbring your laptop to class and have python 2.7 installed.
 
Course plan
  1. Python Basics (Sep- mid-October)
    1. Syntax: assignement, variables, input, loops, conditions, control flow --Homework 1
    2. Data Types (lists, list comprehensions, dic, tuple, strings) -- Homework 2
    3. Basic Functional Programming
    4. Debuggin: binary, float, floating point, runtime error -- Homework 3
    5. Files and Exceptions, Text processing
    6. Pygame --- Homework 4
  2. Object-oriented programming and Funtional programming(mid October- early November)
    1. Classes, sets of objects -- First Mid-term Exam
    2. Inheritance -- Homework 5
    3. more on functional programming
  3. Pythonic implementtion of classical algirthim and scientific problem solving (early November to early-December)
    1. Algorithmic Efficiency -- Second mid-term
    2. Statistical modeling: simulations, random walk -- Homework 6
    3. Basic probability and data plotting
    4. numpy-- Homework 7
    5. Python and API (Bender and grapihcal softwares) -- Final Project due

Schedule

DateTopic Reading&Exercises Slides&Handouts Homework
Wed 9.3 Introduction: what is a computer program? Chapter 1 and 2
How to install Python IDLE
Interpreted Language
Using the Python Interpreter
Lecture 1
Thu 9.4 Variables, data types, expressions Chapter 4
Simple Python Tutorial

Lecture 2
Mon 9.8 Conditionals, review & Exercises Chapter 5
Lecture 3
Lecture3 demo
Wed 9.10 Loops
Lecture 4
Lecture4 demo
Thur 9.11 More on iterations, nested loops Chapter 3 & Chapter 6
Lecture 5
Lecture5 demo
Homework 1 out
Mon 9.15 Functions, random number, math functions Chapter 4
Lecture 6 Slides
Lecture6 demo
Lecture6 handout
Wed 9.17 Functions with return value
Lecture 7 Slides
Lecture 7 demo code
Wed 9.18 In-class exercises, Control Flow
Lecture 8 Exercises
Mon 9.21 Function: Scoping, reviews of control flow
Lecture 9 Slides
Solutions of Lecture8_Exercises
Homework 1 Due
Wed 9.23 Lists and manipulations
Lecture 9 Slides
Homework1 solution
Thurs 9.24 Lists and Strings, More on randomness
Homework 2 Out
Mon 9.29 In-class exercises, lists, strings, functions
Wed 10.1 List methods
Thur 10.2 Tuples
Homework 2 Due
Mon 10.6 More on Tuples
Homework 2 Solution
Wed 10.8 in-class exercises
Thur 10.9 Dictionary
Mon 10.13 More on dictionary
Wed 10.15 review and exercises
Thur 10.16 Tentative first mid-term exam
Mon 10.20 Bisection search
Wed 10.22 PyPlot tutorial

Final Project

 
 

page maintained by Bei Xiao