CIS 1051 Introduction to Programming (in Python)

Summer II 2014

Course Information:

Instructor: Dr. Anwar Mamat
email: anwar@temple.edu

Course Meeting Times:

Monday/Thursday 8:30 am - 12:45 am
Tuesday: 8:30-10:30am
Office Hours: Monday 12:00PM

Course Web Pages:

http://cis.temple.edu/~anwar/CIS1051FALL2014 for lecture materials and assignment details, blackboard.temple.edu for assignment submissions and grades, and Piazza for Q&A, discussions and announcements. These are VERY important sources of course information and must be checked regularly!!

Required Textbooks

Miller & Ranum, Python Programming in Context
Allen B. Downey’s Think Python - How to Think like a Computer Scientist available for legal free download here.

Prerequisites


Grade of C or better in Math 1021 College Algebra or placement into a higher Math course

Course Description:

An introductory "learning by doing" programming course for scientists, engineers, and everybody else who will need basic programming skills in their studies and careers. We cover the fundamentals of structured, modular, and (to some extent) object-oriented programming as well as important design principles and software development techniques such as unit testing and revision control. We will apply our shiny new programming skills by developing computational solutions to a number of real-world problems from a variety of disciplines.

Course Outcomes:

Upon completion of this course students should be able to:

Course Schedule:

A detailed schedule will evolve as the semester progresses. (tentative - expect adjustments & updates throughout the semester)

Days Topics Lecture Notes Reading List Assignments
1 Programming Overview, Environemnt setup, Python Basics, Data, Operators, Expressions; Turtle Graphics, Functions

Lecture 1

Python 3 built in functions

Chapter 1,2

Assignment 1(check blackboard)

Due:07/08

2 More Turtle Graphics, Decisions, Boolean Expressions, Loops Lecture 2   Assignment 2 (check blackboard) Due: 07/15
3 Turtle Calendar, Monte Carlo Method, Strings, Letter Frequency, Word Frequency, Anagrams Lecture 3 Chapter 3,4 Assignment 3 (check blackboard) Due 07/22
4 Recursion and Backtracking Lecture 4    
5 More Recursions Lecture 5   Assignment 4 (Due 08/01)
6 Boggle Game, File IO, Turtle plotting Lecture 6    
7 Turtle recursive shapes, Classes Lecture 7    
8 More Classes and objects Lecture 8   Assignment 5 (Due 08/08)
9 Database Lecture 9    
10 GUI

Lecture 10

students.db
database.py
gui.py
Assignemnt 6 (Due 08/15)
11 Exception, Multiprocessing Lecture 11    
12   Final Exam 9:00am in class    
         
         

Resources: We will use several resources for this course.

Grading:

Students will complete bi-weekly 3-part programming assignments, a midterm and a final. Each assignment will be given a point value. These grading components will be weighted as below. Letter grades for the course will be subject to my evaluation of your overall class performance; do not expect a curve. Please keep your own record of your grades so that you will know your standing in the course and can double-check my records. All grades will be available on Blackboard.

FINAL GRADES

Final grades will be assigned as follows.

Grading Scale:

Final Grade Percentage
A 92-100
A- 90-91
B+ 88-89
B 82-87
B- 80-81
C+ 78-79
C 72-77
C- 70-71
D 62-69
D- 60-61
F 0-59

 

 

 

 

 

 

 

 

Assignment Logistics: All programming assignments must be free of syntax errors on the standard course platform. NO CREDIT WILL BE GIVEN FOR CODE WITH SYNTAX ERRORS! Each program grade will be based not only on correctness, but also on style and good programming techniques. Assignments will be comprised of three parts: a warm-up (appetizer), a main project (entree), and an extension (dessert). We will do the warm-ups and a large portion of the main projects during our class sessions.

Late policy: No late homework or programs. Assignments will usually be due on Thursdays. If a program is not working perfectly, turn it in as is with detailed comments as to which parts are complete, and which are not. Remember: NO CREDIT WILL BE GIVEN FOR CODE THAT DOES NOT COMPILE! Exceptions for illness will be given only by the instructor. Exceptions for poor planning will NOT be given. Now is a good time to develop incremental coding skills, so that you always have working programs to turn in, even if parts are incomplete. Please set aside roughly 20 hours/week for this course outside of scheduled lectures.

Attendance: You are expected to attend and actively participate in all class sessions, which will include hands-on code development and other activities. Inevitably, students who do not attend regularly do poorly on tests and assignments. You are responsible for all material presented while you are absent. Students who miss class due to illness, religious holidays, etc. should inform Joanne as soon as possible if requesting any accomodations as a result. If you have trouble or need extra help, don't hesitate to contact me. Please don't wait until you're hopelessly behind.

Collaboration: We will do some paired programming during lectures, and one group project at the end of the semester. You must solve the remainder of your graded programming assignments without consulting other students. For homework help you may only consult the instructor, the teaching assistants, or tutors. You must abide by the Computer Science Academic Integrity Code, as well as the University's Ethics Code.

Plagiarism: Code reuse is an important feature of modern programming techniques. However, you are expected to write most of the code for your assignments from scratch. Using the language libraries according to assignment specifications and reusing your own code from prior work in the course is expected. Doing a web search to find and use partial solutions is an ethics violation. Reusing code from examples we do in lectures or from the textbooks is acceptable, but only with proper citation (a comment indicating the original source). Any uncited or illicit code reuse is a very serious ethics violation.