Revision Date: October 1, 2009
|
| ||
| Instructor: Dr Monica Anderson | email: anderson@cs.ua.edu | web: http://beastie.cs.ua.edu/cs260/ |
| Office: SEC 3418 | hours: TTh 11:00 am- 12:00pm | phone: 348-1667 |
|
|
CS 260 Foundations of Computer Science (3-0) Three hours (Foundations)
Prerequisites: (CS 150 or ECE 285), CS 160, (MATH 113 or MATH 115)
An introduction to the science of Computer Science.
Topics include: introduction to analysis of algorithms,
searching,
sorting,
design strategies,
problem solving,
arrays,
singly-linked lists,
stacks, and
creating and searching binary search trees
CS 260 Foundations of Computer Science (3-0) Three hours
Prerequisites: (CS 150 or ECE 285) and CS 160
This course focuses on the use of objects as a programming
paradigm. With objects as a basis, students will be exposed to
a variety of important Computer Science ideas. These
ideas range from judging
the efficiency of algorithms to understanding the trade-offs
between various strategies for storing and retrieving data.
In addition, students will be exposed a sampling of
topics in system development, including graphics,
event-driven, and network programming.
At the end of this class, a student should be understand the concepts of:
Prerequisites: (CS 150 or ECE 285), CS 160, (MATH 113 or MATH 115)
Object-Oriented Programming in Python, by Michael Goldwasser and David Letscher, Pearson/Prentice Hall, 2008.
The following chapters of Object-Oriented Programming in Python will be covered (in the order given):
|
chapter | topic | pages | hours |
|
| |||
| 1 | Cornerstones of Computing | 26 | 2 |
| 2 | Getting Started with Python | 58 | 1 |
| 3 | Getting Started with Graphics | 36 | 2 |
| 5 | Additional Control Structures | 44 | 2 |
| 6 | Defining our own Classes | 34 | 4 |
| 7 | Good Software Practices | 34 | 4 |
| 9 | Inheritance | 28 | 3 |
| 10 | Deeper Understanding of the Management of Objects | 28 | 4 |
| 11 | Recursion | 36 | 3 |
| 12 | More Python Containers | 38 | 4 |
| 13 | Implementing Data Structures | 32 | 3 |
| 14 | Sorting Algorithms | 26 | 3 |
| 15 | Event-Driven Programming | 28 | 3 |
| 16 | Network Programming | 38 | 3 |
| total hours: | 38 | ||
The remaining contact hours will be used for in-class assignments and testing.
Grades will be determined by the following percentages:
|
percentage | task |
| 40% | Two Midterm Exams |
| 20% | Final Exam |
| 30% | Programming assignments (5) |
| 10% | Ad-hoc assignments, activities, and class participation |
Each programming assignment will be assigned an originality score of 0.0 or 1.0, depending upon the originality of the submission. Assignments that are deemed unoriginal will be given an originality score of zero while assignments deemed original will be given a score of one. The score for each programming assignment will be multiplied by the minimum originality score over all assignments. The consequence of this is any originality score of zero will result in each of the four programming assignments scores being reduced to zero. This reduction will apply to all assignments, whether they already have been submitted or will be submitted in the future.
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? significant 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
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 260 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. For the major programming projects, there is a grace period: late projects will be accepted up to 48 hours after the due date with no penalty. Each on-time project 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 requested 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 be sanctioned).
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.
lusth@cs.ua.edu