Course Objective:
To prepare CS and CIS majors for further study in computer science, especially
programming classes, by establishing a foundation of solid algorithm design.
Secondly, to provide non-majors with a complete enough course to facilitate
their thinking algorithmically regardless of the particular area of study.
Students should be exposed to the implementation of algorithms in the form
of demonstrations in class.
Course Description:
An introduction to algorithm design and programming as components of the
software life cycle, with emphasis on the development of algorithms for
solving problems.
Prerequisite: None.
Software and Tools Used to Support Class:
- JDK
- PC Grasp or JGrasp
- E-mail
- Netscape and/or Microsoft Explorer
- Word Processor
Required Materials:
- Text: Introduction to Computing and Algorithms.
by Russell L. Shackelford.
Addison -Wesley Publishing
- 3 to 5 3.5" disks
Topical Outline:
- Definition of an algorithm
- Relationship of algorithms to computers
- Algorithmic components: control structures, data structures, modules
- State and Behavior
- Variables: declaration, initialization, type, identifiers
- Operators: assignment, arithmetic, boolean, logical, input/output
- Type matching
- Type casting
- Data types: atomic, complex
- Fixed data: constants, literals
- Decisions: boolean expressions, branching, nesting, cascading
- Procedural Abstraction:
-Motivate modularity
-Module interfaces: parameters, parameter passing
-Creating and calling modules: arguments, return values, formal and actual parameters
- Scope of Data
- Testing algorithms: maintenance, reuse of logic
- Repetition: iteration and recursion
- Data abstraction: records, arrays
Optional topics to be covered at the discretion of the instructor include:
- Data abstraction: Pointers, linked lists, trees, graphs, high-dimensional arrays, arrays of records
- Traversals: linear, nonlinear, stacks, queues
- Searching: linear by traversal, binary search on sorted data
- Sorting: selection, insertion
- Divide and Conquer: mergesort
- Optimization: greedy technique, dynamic planning
- Multithreading
Grading Policy:
The grade for the course will be assigned based on the following
percentages:
- 3 - 4 Tests: 80 - 90%
If you miss a test, the score you make on the final will be assigned
for that test.
- 7 - 12 Assignments: 10 - 20%
Assignments are expected at the beginning of the class of the day they are
due. Assignment that is not turned on time, could be turned on the due
date of the following assignment with a note describing the reason
for not turning it on time, and it will be graded with a penalty of
75%.
- Attendance, Quizzes, and class participation 0 - 10%
- To pass the course with a "C" grade students should
have at least an overall overage of 70% AND 60% average on
assignments.
- Grading Scale
<= 90 A
>=80 AND <90 B
>=70 AND <80 C
>=60 AND <70 D
< 60 F
Instructor:
Said C. Fares
Office: 2132 Nevins Hall
Traditional Office Hours: 10:50 AM - 11:30 AM TW
or by appointment
Electronic Office Hours: Any day, any time
E-mail: sfares@valdosta.edu
Phone: (912) 333-5780
Semester Calendar:
May 13: First Class Day
May 25: Mid-term
June 3: Last Class Day
June 4: Final (Friday, 8:00 am - 10:00 am)
Last update May 4, 2004.