CS 150: Programming I Revision Date: January 20, 2009 Instructor: email: web: Office: hours: phone: Printable Version Catalog Statement CS 150 Programming I. (2-0) Two hours Prerequisites: MATH 112 An introductory course on programming. Language concepts: primitives, variables, sequences, functions, selection, iteration, and recursion, Software engineering concepts: testing and debugging. System concepts: directories, paths, files, and text editing. Course Summary This course introduces Python, an important system level programming language. Using Python, students will learn the basics of programming, including the designing, writing, testing, and debugging of programs. In addition, students will learn basic system tasks for the purposes of organizing and maintaining a suite of Python programs. Course Objectives At the end of this class, a student should be understand the concepts of: defining, using, and modifying variables formulating expressions to represent desired quantities controlling the execution of code within a program defining and calling functions generating thorough test suites identifying and correcting syntactic and semantic program faults organizing code using system utilities Prerequisites and Corequisites Prerequisites: MATH 112 Textbook Visual QuickStart Guide: Python , by Toby Donaldson, Peachpit Press, 2009. Material The foll owing chapters of VQG: Python will be covered (in the order given): pages topic hours 1-6 Introduction to Programming 1 7-21 Numbers and Strings 1 22-28 Variables 1 29-40 Writing Programs 1 41-51 Boolean Logic and If-Statements 1 63-68 Defining and Calling Functions 1 69-79 Scope, Modules, and Namespaces 1 Handout Recursion 2 52-62 Loops 1 81-89,122-125 More on Strings 1 90-98 Useful String Functions 1 99-111 Lists 1 112-120 Comprehensions, Dictionaries, and Sets 1 121,126-140 Reading and Writing Files 1 total hours: 15 Additionally, the following topics will be covered using handouts and online tutorials: topic tutorial hours text-editing http://heather.cs.ucdavis.edu/~matloff/UnixAndC/Editors/ 2 directories and paths http://www.ee.surrey.ac.uk/Teaching/Unix/ 2 manipulating files http://www.ee.surrey.ac.uk/Teaching/Unix/ 1 debugging http://www.ferg.org/papers/debugging_in_python.html 2 testing http://diveintopython.org/unit_testing/index.html 2 The remaining contact hours will be used for testing and review. Grading Grades will be determined by the following percentages: percentage task 30% Two Midterm Exams 30% Final Exam 30% Programming assignments (4) 10% Ad-hoc assignments and class participation In addition, you will be given a pass-fail exam prior to the last drop date. If you fail this exam, you will fail the class, regardless of your performance on the other grading metrics. This exam will test your ability to write a simple program in Python and should take about 15 minutes to complete. Grading Methodology For programming assignments, points are awarded for programming style, program organization, and test coverage. The following table describes how style, organization, and coverage points are allotted: Specifically, your work will be graded on the following points: style organization coverage authorship of every file? good comments / self-explanatory code? good indentation / no line wraps? well-named variables and functions? short, concise functions? appropriate abstractions and generalizations? appropriate separation of concerns? s ignificant testing/debugging? all code reachable and used with no redundancies? all variable names private as possible? deductions for failed tests as appropriate Each category is worth 4.0 points. Each kind of violation within a category will result in a deduction of 0.8 points. Percentage score is calculated as follows: (style * 0.10 + organization * 0.20 + coverage * 0.70) / 4.0 Other Details Please be in your seat by the beginning of class. There is to be no food or drink in the classroom. Sleep is allowed only in the event of a stultifyingly boring lecture. Signing up for the CS 150 mailing list is mandatory. Schedule changes, assignment clarifications, and such will be announced via the mailing list. Programming assignments are to be submitted electronically by 11:59:59 p.m. on the day they are due. There is a grace period: late assignments will be accepted up to 48 hours after the due date with no penalty. Each on-time submission which grades 80% or better will be rewarded with 0.33 extra credit points added directly to your final percentage. Grading is straight scale with the following cut-offs ( A grades given as an example, other grades are similar): x > = 97% A + x > = 93 and x < 97% A x > = 90 and x < 93% A - B grades range in the 80% level, C grades range in the 70% level, and D grades range in the 60% level. Anything lower than 60% is an F . These cut-offs are strict. For example, 79.99999% is a C + . Interaction with fellow classmates on homework and programming assignments is encouraged, but there should be no sharing of code or solutions, only an exchange of high-level ideas. Any help or hints must be given and received via the mailing list; such help must be documented in your assignment, clearly crediting the idea and the idea ' s originator. You will be required to sign a pledge stating that you will abide by these rules. If it can be shown that you even looked at someone else ' s programming assignment code, you will be considered guilty of plagiarism. The minimum punishment for plagiarism, or any other academic misconduct, is dismissal from the class with a failing grade. You are required to protect your work from plagiarism. If your work is plagiarized, it will be assumed that you were a willing participant in the plagiarism and you will receive the same punishment as the plagiarist. The only exception to the collaboration rule is assignment 4. For that assignment, you are required to work in teams of two, unless excused by your instructor from this requirement. Each team will submit a single assignment with the names of team members prominently displayed in assignment documentation. Both team members will receive the same grade (and in the case of cheating by one team member, both will fail). Attendance is required. For each unexcused absence (except the first), your final percentage will suffer a deduction of 2.0%. Thus, five unexcused absences beyond the first will lower your score one full letter grade. Even one unexcused absence beyond the first will likely lower your final grade a plus/minus value. An absence will be excused if you alert your instructor prior to the start of the class you will be missing. firstname.lastname@example.org
Want to see the other 4 page(s) in sylabus?JOIN TODAY FOR FREE!