CS 260:  Foundations of Computer Science

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

Printable Version

Catalog Statement

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

Course Summary

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.

Course Objectives

At the end of this class, a student should be understand the concepts of:

Prerequisites and Corequisites

Prerequisites: (CS 150 or ECE 285), CS 160, (MATH 113 or MATH 115)

Textbook

Object-Oriented Programming in Python, by Michael Goldwasser and David Letscher, Pearson/Prentice Hall, 2008.

Material

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.

Grading

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.

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? 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

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 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