CPTR 124
Fundamentals of Programming Fall 2015

Home Code Final Exam Study Guide Labs WebGrades


Instructor

Rick Halterman

School of Computing
1117E Hickman Hall
Southern Adventist University
Collegedale, TN 37315-0370
423-236-2871

halterman@southern.edu
http://computing.southern.edu/halterman

Office Hours: http://computing.southern.edu/halterman/General/OfficeHours


Course Venue

HSC 1315    MWF 8:00–8:50 am
HSC 1303    T 1:00–3:30 pm or W 1:00–3:30 pm


Textbook

Halterman, Richard L. Fundamentals of Python Programming. 2015.


Prerequisite

Math ACT ≥ 22 or Math SAT ≥ 520 or MATH 116 College Algebra, or permission of instructor


Purpose

Catalog description:

CPTR 124. Fundamentals of Programming (G-1) 4 hours
Prerequisite: Math ACT ≥ 22 or Math SAT ≥ 520 or MATH 116 or permission of instructor.
Control structures, data types, data representation, compiling, debugging, modularity, and standard programming algorithms are introduced, using an object oriented language. Three hours of lecture and three hours of laboratory each week.

This course has three objectives:

  1. to develop the ability to correctly analyze a variety of problems and generate appropriate algorithmic solutions
  2. to explore the syntax and usage of the Python programming language as a means of accomplishing the first objective
  3. to examine the software development environment and associated tools.


Class Requirements and Grading

Class Work. The following class activities, weighted as indicated, determine the student's overall average for the course.

Activity Weight
Assignments 20%
Worksheets 20%
Quizzes 20%
Midterm Examination 20%
Final Examination 20%

Grade Distribution. The overall average determines the course grade according to the following table:

Overall Average
(a)
Letter
Grade
92 ≤ a A
90 ≤ a < 92   A–
88 ≤ a < 90   B+
82 ≤ a < 88 B
80 ≤ a < 82   B–
78 ≤ a < 80   C+
70 ≤ a < 78 C
60 ≤ a < 70   C–
58 ≤ a < 60   D+
52 ≤ a < 58 D
50 ≤ a < 52  D–
a < 50 F

CPTR 124 Fundamentals of Programming is a 4-hour course that includes an integrated laboratory component. As indicated above, the lab assignments contribute to the overall course grade. The lab is not a separate course in the catalog, but for scheduling purposes the University registration system requires a separate 0-hour entry for the lab. The grade for this 0-hour lab entry is Pass/Fail, determined as follows:

Whether P or F, the 0-hour lab entry does not contribute to a student's overall GPA.

Remarks

Laboratories and assignments. Attendance at laboratory sessions is required as this is a four credit-hour course. All lab assignments are due at the designated time and date. Late assignments will be penalized.

Ethics. As described above, a student's overall course grade is based on several factors: worksheets, quizzes, examinations, and assignments. Each activity includes an expectation about a student's individual effort in the work produced. The following specifies the degree of collaboration permitted for each activity:

  • Worksheets and quizzes. Each student must work individually on individual worksheets and quizzes. This means collaboration in any way with others is not permitted. Some worksheets and quizzes may be team based, in which case collaboration is limited to teammates. The instructor will clearly identify the team-based worksheets and quizzes.

  • Examinations. All examinations must represent individual effort; collaboration in any way with others is not permitted during examinations.

  • Assignments. Programming assignments present opportunities for students to explore programming concepts in a structured way. Assignments constitute the fundamental learning experience for this course. Ideally each student will develop his/her own logic and implement an assignment's solution with no help from others; however, such an experience is rare for most students. Since the programming assignments are meant to be learning experiences, most students will be uncomfortable with their ability to complete an assignment at the start. This is due to their lack of experience with the concepts the assignment addresses. The process of completing the assignment is intended to provide the necessary experience and build confidence. Students learn differently, and some need more help than others. The laboratory setting provides immediate help from the instructor and lab assistant. Tutors, classmates, friends, and the web can provide additional help outside of lab.

    It is important to understand that the experience gained from doing the assignments forms the basis for programming problems on examinations. The wrong kind of help can dilute the learning goals of the assignments and leave students less prepared for the examinations. The best kind of assistance includes pointing out simple corrections or providing hints about how to structure a solution. Explaining to a classmate how a particular Python language feature works independent of its use within his/her program always is valuable. Helping a fellow student extinguish a puzzling error message also always is a good thing to do.

    Much less valuable help includes “I do not know what you are doing, but here, look at my code, this is how I did it.” Even worse is this: “I’ll email you my code so you can see how I did it.” Providing clues or hints to nudge a student in the right direction is much more beneficial to learning. Unfortunately, when presented with a complete solution, many students will take the easy way out and not put in the time necessary to understand completely how the code they were given works. This means they will complete the assignment but lack the full effect the process was meant to provide. A student that receives credit for an assignment should understand completely all the concepts involved in the assignment's solution.

    It obviously is bad if you submit someone else’s work as your own, but, as is common in academic settings, knowingly enabling the opportunity for someone else to copy your work also is bad.

    Please take care as you are providing help to others. It IS okay to help others, and you SHOULD help others as you can, but giving others your code or doing their work for them is not really the help they need.

    It is very important to note that this course policy on collaboration in programming assignments is not the norm in other courses offered by this department or university. Speaking freely with others about your assignments in another course very likely will be considered an act of academic dishonesty. If you are unclear about what is acceptable collaboration in another course, you should ask the instructor.

All incidents of academic dishonesty will be reported to the Associate Vice-president of Academic Affairs.

Class study. Appropriate study for the course includes reading the textbook (at least as far as last class's lecture material), experimenting with the programs from the book and programs we develop in class, and working through the exercises at the end of each chapter.

Weekly quizzes encourage students to remain current in their class preparation. Quiz contents are based on material covered in the preceding classes. Usually quizzes will be distributed at the beginning of the class period. Missed quizzes may not be made up; however, the lowest quiz score will be dropped during the last week of the semester.

Class periods that do not offer a quiz may include a worksheet to be completed during the class period by the student. Careful attention in class facilitates the completion of the worksheet. Missed worksheets may not be made up; however, the lowest two worksheet scores will be dropped during the last week of the semester.

Class decorum. Please comply with the standards of classroom attire as specified in the Student Handbook.  Notebook computers are welcome, and the classroom and lab (generally) have an excellent wireless signal.  Those with computers should mute the volume and sit in the rear of the class so as not to distract students behind them.  Electronic devices must be turned off during quizzes and tests.  You are expected to remain in the classroom during quizzes and tests, so be sure to take care of affairs (such as bathroom visits and tissue acquisition) before you sit for the quiz or test.

Examinations The dates for each test is listed in this syllabus. In certain situations, due to unavoidable circumstances, a missed test may be made up. Arrangements for the retake should be made before the time of the originally scheduled test. The make-up test may vary greatly in form from the original test, but its content (topics addressed) will be the same. Because of this difference, any points added (the so called "curve") to tests taken during the regularly scheduled time may not apply to retakes.

Please note the date and time for our final exam listed below. You need to plan to take your final exam at the scheduled time. Please make your work and vacation plans accordingly. Academic Administration will grant approval for variance from the published exam schedule only in cases of verified, serious, illness or a death in the immediate family. Academic Administration may, in case of exceptional and unavoidable circumstances, approve a variance, in consultation with the professor of this course. A $65 processing fee may be assessed.

Extra credit. Since the assigned material and activities are sufficient for most students, no extra credit will be available for additional work. However, well-prepared students wishing to enhance their learning experience beyond the class activities will be directed, upon request, to additional resources. Any such additional work will not influence the grade for this class.  

SAU account.  All students must have an active Southern Adventist University email account. This account is necessary to receive class messages and to be able to use the computers in the programming lab.

It is important that you check your southern.edu email account frequently (at least daily, if possible) so you you do not miss potentially important information about this course. Please use use your southern.edu email account when contacting the instructor; if you use a non-Southern account, your message may not make it through the University's spam filter.

Disability Statement. In keeping with university policy, any student with a disability who needs academic accommodations should call Disability Support Services at 423-236-2574 or Lynn Wood Hall, room 137, to arrange a confidential appointment with the Disability Services Coordinator (DSC) before or during the first week of classes. (Students who request accommodations after the third week of the semester might not complete the process in time to receive accommodations for that semester.) Legally, no retroactive accommodations can be provided. For more details, visit the Disability Support Services website at www.southern.edu/disability support.

Accommodations for disabilities are available only as recommended by Disability Support Services. Students whose accommodations are approved will be provided confidential letters which students should review and discuss with their professors in relation to particular course requirements.


Topics

Week Beginning Text Chapter Topics
Aug 24 1 Context of software development, tools, Wing IDE 101 IDE, writing and running Python programs
Aug 31 2 Values, variables, identifiers, assignment, reserved words, console input and output integers, floating-point numbers, strings, Booleans, eval function, formatting output
Sep  7 3 Arithmetic operators, expressions, mixed-type expressions, operator precedence and associativity, comments, formatting, types of errors, algorithms
Sep 14 4 Conditional execution: relational operators, Boolean expressions, if statement, compound Boolean expressions, if/else, multi-way if/elif/else, nested conditionals, conditional expressions, typical errors in conditional statements
Sep 21 5 Iteration: while loops, for loops, nested loops, abnormal termination with break and continue, infinite loops
Sep 28 6 Using functions: parameter passing, return values, time functions, standard mathematical functions, pseudorandom numbers
Oct  5 7 Creating functions: defining functions, calling functions, formal vs. actual parameters, call by value
Midterm Examination on Wednesday, October 7
Oct 12 8 Modules, global variables, recursion, generators
Oct 19 9 Using standard Python objects: string processing, file streams, rational numbers, Turtle graphics, simple graphical user interfaces, mutable vs. immutable types, object aliasing, garbage collection
Oct 26 10 Lists: declaring, using, passing to functions, aliasing, slices, copying, multilists, list comprehensions
Nov  2 11 Tuples, dictionaries, sets, variable argument lists, function keyword arguments, counting and grouping with dictionaries
Nov  9 12 Exception handling: exception mechanics, using exceptions
Nov 16 13 Custom types: classes, member data, methods, constructors, limiting access to members
Nov 23 Thanksgiving Break
Nov 30 14 Class inheritance: is a relationship, overriding methods, invoking base class code, inheritance hierarchies, polymorphism and object-oriented frameworks
Dec  7 14 Algorithm design: good vs. bad algorithms, sorting, searching, permuting, memoization
Dec 14 Final Examination on Tuesday, December 15


Important Dates

  • Monday, August 24: first day of class for CPTR 124
  • Wednesday, October 7: Midterm examination
  • Friday, October 16: no class (midterm break)
  • Monday–Friday, November 23–27 : no class (Thanksgiving break)
  • Tuesday, December 15 at 8:00 am: Final examination Note day and time!


Class Code

Code we develop in class is available here.