Introduction to Computer Science CSC 280 Fall 2015

Basic Info

Instructors: Prof. Bei Xiao (bxiao AT american.edu)
Teaching Assistant: Alex Neuenkirk (alex.neuenkirk AT gmail.com)
Time: Mon/Wed/Thurs 2:35-3:50 pm (Session 4)
Mon/Wed/Thurs 11:45-1 pm (Session 1)
Location: Anderson B-14
Office hours (Tentatively):
Dr. Xiao: Monday 4-5:30pm, Thursday 4-6pm (SCAN 110)
Alex: Tuesday/Friday, 1-2pm, SCAN 113
Syllabus: syllabus.pdf
 
Course description: This course teaches programming and problem solving using Python. We will cover programming fundamentals (variables, conditionals, iteration, functions), object-oriented programming, and graphical programming. In this course we will also look beyond programming to computer science as a discipline, focusing on problem solving, and exploring diverse topics such as artificial intelligence, gaming,image processing, natural language processing, numerical methods, and how computers work. The class is heavily on programming exericses either individually or in team. Weekly labs (usually on Wed if otherwise noticed) provide guided practice on the computer, with staff present to help.
 
Handouts:
  1. First Steps
  2. Installing Python IDE
  3. Running Python in Command lines
 
Online Discussions: In addition to office hours, you are highly encouraged to use Pizza to discuss questions regarding lectures and homework assignments. I will also post answers to popular questions on Pizza.
  • Sign up for Piazza
  •  
    GitHub: Midway through the semester, we will star to use GitHub, especially when we start collaborative project. You can post your homework solution on GitHub as well so other students can see.
  • Learn about GitHub here.
  •  
    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: 60% Homework Assignments (7 projects), 15% in-class Mid-term exam (short programming tasks), 15% Final project/exam, 5% in-class quizzes (randomly timed), 5% attendance.
     
    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 11:59pm of the due date. No late assignemtn is accepted.

     
    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. Missing 3 classes will automatically result in zero attendance score.
     
    Computer and software You can either use the computer in the lab or bring your laptop to class and have python 2.7 installed.
     
    Expected Outcomes
    1. Be fluent in the use of procedural statements:assignments, conditional statements, loops, method calls, and arrays.
    2. Understand basic data types, strings, lists, files and be fluent in use of functional programming.
    3. Understand the concepts of object-oriented programming as used in Python: classes, subclasses, properties, inheritance, and overriding.
    4. Have knowledge of basic searching and sorting algorithms. Have knowledge of the basics of vector computation.
     
    Course plan
    1. Python Basics (Sep- mid-October)
      1. Syntax: assignement, variables, input, functions --Homework1
      2. loops, conditions, control flow -- Homework 2
      3. Data Types (lists, list comprehensions, dic, tuple, strings) -- Homework 3
      4. Files and Exceptions, Text processing
      5. Grahpics, Mouse, and Pygame --- Homework 4
    2. Object-oriented programming and Funtional programming(mid October- early November)
      1. Classes, sets of objects Mid-term Exam
      2. Inheritance -- Homework 5
      3. more on functional programming
      4. Recursion
    3. Pythonic implemention of classical algirthim and scientific problem solving (early November to early-December)
      1. Search and Sorting--Homework 6
      2. Statistical modeling: simulations, random walk
      3. Numeric Python and plotting-- Homework 7
      4. Image Processing and Basic Computer Vision
      5. Web programming -- Final Project due

    Schedule

    DateTopic Reading&Exercises Slides&Handouts Homework
    Monday 8.31 Introduction: computers and programs Chapter 1
    How to install Python IDLE
    Interpreted Language
    Using the Python Interpreter
    Lecture 1
    Wed 9.2 Values, data types, expressions Chapter 2
    Simple Python Tutorial
    Learn Python Hard Way

    Lecture 2
    Thursday 9.3 Variables and Assignments Practice with Variables and names
    Practice raw_input()
    How to comment code?
    Lecture 3
    Wed 9.9 Lab session 1:Command lines, Expressions and Assignments
    How to run command lines
    Lab1 Handout
    Thursday 9.10 Math Function, Function definition and calling Math Module
    Define Functions
    Demo code
    Lecture 4
    Homework 1 out
    Monday 9.14 Lecture 5: Function, Function with return Global and Local variables
    Lecture 5
    Wed 9.16 Lab session 2:Assignments, Functions
    Lab2 Handout
    Thursday 9.17 Lecture 6: Conditionals, if-elif-else Chapter 5
    Lecture 6
    Lecture6.py
    Monday, September 21 Lecture 7, nested if, While loop Chapter 7
    How to put docstring inside a function
    Lecture7
    Lecture7.py

    Final Project

     
     

    page maintained by Bei Xiao