CSE 231

Introduction to Programming I
Fall Semester, 2009
Dr. Bill Punch
Sections 1,2,4,5,6,7: Tue,Thur: 8:30-9:50 AM, 1345 EB
Sections 9.10,11,12,13,14: Tue,Thur: 12:40-2:00 PM, 1345 EB

Description

Introduction to programming using Python. Design, implementation and testing of programs to solve problems primarily in engineering, mathematics and science. Programming fundamentals, functions, classes, lists, and dictionaries.

Objectives

In this course, students will study general programming concepts, as well as a modern programming language which illustrates those concepts. Students will design, implement and test Python programs to solve problems primarily in engineering, mathematics and science.

Instructor

Bill Punch
3147 Engineering Office Hours: Tu, Th after class or by appointment
Phone: 517-353-3541
email:punch@cse.msu.edu email is by far the best way to contact me

Course Web Site

Information related to the course is available on the Internet at: http://www.cse.msu.edu/~cse231 Those files are also accessible from the CSE Instructional System under the /user/cse231 directory. Information is also distributed to the class through the angel web site, see http://www.angel.msu.edu

Course Textbooks

The Practice of Computing using Python by Punch and Enbody. Draft will be made available to students online. No other book required.

Lecture Sections

The lectures for Sections 01-07 will be conducted in 1345 Engineering on Tuesdays and Thursdays from 8:30 AM to 9:50 AM and the leectures for Sections 09-14 will be in the same place, EB 1345, on Tuesdays and Thursdays from 12:40-2:00 PM. Regular attendance at lecture is critical to success in this course.

Laboratory Sessions

The computing laboratory for CSE 231 is located in 3320 Engineering; attendance at scheduled laboratory sessions is mandatory. Missing laboratory sessions will reduce your final grade (see below).

The two-hour scheduled laboratory sessions are conducted by Teaching Assistants, and are used to complete laboratory exercises and to consult with Teaching Assistants about other aspects of the course, e.g. projects.

The laboratory exercises are designed to be learning tools which complement the lectures and assigned readings. They are designed to be collaborative experiences where students work with each other and the Teaching Assistant to complete the lab exercises.

Course Grades

Each student's course grade will be based on the sum of the points earned in the following two categories:

Examinations (50% of total course points)
Computer Projects (45% of total course points)
In Class Exercises ( 5% of total course points)


To be eligible to earn a non-zero grade in the course, a student normally must do ALL the following:
  1. receive credit for at least twelve laboratory exercises,
  2. earn at least 50% of the total points for the computer projects, and
  3. earn at least 50% of the total points for the examinations.
The following table gives the scale for course grades:

4.0 90% of points available
3.5 85% of points available
3.0 80% of points available
2.5 75% of points available
2.0 70% of points available
1.5 65% of points available
1.0 60% of points available


The instructor reserves the right to adjust the scale for course grades, if necessary. Students who complete fewer than twelve laboratory assignments will have their final grade reduced by 0.5 for each laboratory assignment missed : if a student had sufficient points to normally earn a 3.0, but completes only ten laboratory assignments, that student's grade will be reduced by 2*0.5 to a 2.0 final grade. Contact your instructor, if you have any concerns about your performance in the class.

Important Dates

See: Academic Calendar 09/10 for complete dates, but note that:

Exams

Two midterm examinations and a final examination will be conducted during the semester, and will constitute 50% of the total course points. These exams will be in class exams held during the regular class times in Engineering 1345. Final Exam Schedule: All issues related to the final examination will follow the policies and schedule of the University: MSU Final Exam Schedule

Periodically there will be unannounced in-class exercises. No make ups are available for these exercises. Together they constitute 5% of the course points. They will not be graded, only marked on your reports as

Computer Projects

Eleven computer projects will be assigned, and will constitute 45% of the total course points. These projects will include the design and implementation of solutions using Python. Projects will normally be due each Monday of the semester except for week 1 and exam weeks. Project solutions are submitted electronically. A copy must be saved on CSE disks (the H drive from the lab computers) where they are archived in case of problems with electronic submission -- that is the only acceptable evidence of completion.

Each project solution is electronically compared to all other solutions to identify similar solutions. Teams or individuals that submit solutions that are essentially identical will receive a score of zero for that assignment. A student who is involved in a second such incident of academic dishonesty will receive a grade of zero in the course. Since the comparison is done off campus, to protect your privacy do NOT include your name or PID in your project solution.

Under no circumstances should you share a project solution with another team or individual. Simply showing your solution to another student almost guarantees a zero score: past experience shows that a student who asks to "look at" your solution will copy parts of it or pass it along to someone else who copies it.

One or two computer projects MAY be assigned to be done collaboratively with another student assigned from your assigned laboratory section. You and your partner form a team for one project, and will normally receive the same grade on that project.

Notes

The instructor reserves the right to modify course policies, the course calendar, and assignment specifications.

Any extenuating circumstances which impact on your participation in the course should be discussed with your lecture instructor as soon as those circumstances are known (such as absences due to illness, religious observances, or other required school activities).

All students are expected to be responsible users of the computer system provided for this course. Account usage guidelines published by the Department of Computer Science and Engineering are posted under: Account Usage Guidelines

You are responsible for familiarity with the course policies printed in the course pack and posted under: Course Policies

Here are some brief comments about several of those policies:
  1. Make-ups for examinations may be arranged, if your absence is caused by documented illness or personal emergency. A written explanation (including supporting documentation) must be submitted to your lecture instructor; if the explanation is acceptable, an alternative to the examination will be arranged. When possible, make-up arrangements should be completed in advance.
  2. A student who is unable to complete a computer project by the specified due date because of illness or personal emergency should contact his or her lecture instructor. If the student's explanation is acceptable, the assignment due date will be extended (or his or her lecture instructor will make other appropriate arrangements).
  3. A student who misses a scheduled laboratory session due to illness or personal emergency should contact his or her Teaching Assistant. If the student's explanation is acceptable, his or her Teaching Assistant will permit the student to make up the missed laboratory exercise within one week of the original due date.
  4. To be eligible for credit, each solution to a computer project must fulfill the published requirements, must be submitted by the published due date, and must be your own work.
  5. The Department of Computer Science and Engineering expects all students to adhere to MSU's policy on Integrity of Scholarship and Grades, which includes the statement, ".... all academic work will be done by the student to whom it is assigned, without unauthorized aid of any kind". The complete text of the University policy is posted under: University Policy on Scholarship and Grades . Students who violate this policy may receive a failing grade in the course.
  6. Students requiring accommodation under the Americans with Disabilities Act (ADA) with MSU's Resource Centers for Disabilities (RCPD) should bring their Verified Individualized Services and Accommodations (VISA) form to the instructor as near the beginning of the term as possible.
  7. Extensive Teaching Assistant help is provided for this course, but if you should desire tutoring, the Diversity Programs Office (1108 EB) (http://www.egr.msu.edu/egr/departments/dpo) coordinates volunteer and paid tutoring assistance available to all students, for many common classes.
  8. Accommodations will be made for religious observances, if requests are made well in advance. Since religious observances are usually known at the beginning of class and assignment due dates are in this syllabus we expect students to request accommodation at the beginning of the semester. See MSU's policy on Religious Observance for more details.

Lecture Calendar

Week Date Topic Date Topic
1 Th 09/03 Course Overview
2 Tu 09/08 Computer Organization Th 09/10 Problem Solving and Data
3 Tu 09/15 More Data and Assignments Th 09/17 Decisions (Selection)
4 Tu 09/22 Repetition Th 09/24 Introduction to Data Structures
5 Tu 09/29 Working with Lists Th 10/01 Files and List Comprehensions
6 Th 10/06 Functions: finding and using them Tu 10/08 Exam 1
7 Tu 10/13 Functions: writing your own Th 10/15 Sets and Dictionaries
8 Tu 10/20 Shallow/Deep Copy, more functions Th 10/22 Data Structures continued
9 Tu 10/27 Introduction to Classes Th 10/29 Classes II
10 Tu 11/03 Scope Th 11/05 Overloaded Operators
11 Th 11/10 Inheritance and Classes Tu 11/12 Exam 2
12 Tu 11/17 2 dimensional lists and arrays Th 11/19 Exceptions
13 Tu 11/24 More Exceptions Th 11/26 Happy Thanksgiving (no class)
14 Tu 12/01 Testing in Python Th 12/03 Algorithms and Big Oh notation
15 Tu 12/08 Sorting and Searching Th 12/10 Course summary