Fundamentals of computer science II

Computer Science 206 is a general introduction to theoretical computer science, focussing mainly on the abstract properties of various data types, their representation and implementation on contemporary computers, and the algorithms most frequently used to operate on them. Computer Science 151 is the normal prerequisite.

The instructor

John David Stone

Office: Science 2418
Telephone: extension 3181
Office hours: Tuesdays, 2:15 to 4:15 p.m.; Wednesdays, 1:15 to 3:15 p.m.; Thursdays, 9 to 11 a.m.; Fridays, 9 to 11 a.m.; or by appointment.

The class

Timothy Andrews ... Casey Baker ... Luke Beschta ... Geoffrey Bright ... Aaron Dale ... Nathan Ellis ... Syed Faisal ... Ryan Gerling ... Omar Ghaffar ... Ryan Gibson ... Gerald Johnson ... Rhys Jones ... Kevin Notheis ... Brendan O'Fallon ... Robert Reasoner ... Evan Schnell ... Sunil Sitaula ... Sarah Staveteig ... Daniel Wislocki ... Lea Wittie ... Yu Yang ... Jianwei Yuan

The textbook

Walker, Henry M. Computer science 2: principles of software engineering, data types, and algorithms. Glenview, Illinois: Scott, Foresman and Company, 1989.

The requirements

Here is what each student in the course is expected to do:

In the determination of final grades, the exercises collectively will count for about seven-tenths of your grade, the mid-semester examination for one-tenth, and the final examination for the remaining one-fifth.

Solutions to exercises may be submitted either in hard copy or by electronic mail (to stone@math.grin.edu).

Each assignment carries a deadline, which I expect most students to meet without difficulty. I am usually willing to accept late submissions until I begin returning corrected papers to other students; however, my policy is to judge late papers more strictly than those that come in before the deadline, on the theory that the extra time should be put to good use.

Since you will receive credit on the basis of your performance in this course, it would be unethical to submit any work that is not your own. It is improper to borrow the results of other people's intellectual effort. If I encounter any indications of plagiarism, the Committee on Academic Standing will deal with them.

The schedule

The class is scheduled to meet at 8 a.m. on Mondays, Wednesdays, and Fridays, from January 22 through March 15 and from April 1 through May 10. I exhort students to retire at a reasonable hour on Sundays, Tuesdays, and Thursdays and to set their alarm clocks with care.

Reading: Walker, sections 2.1 through 2.3, pages 50-68.
January 22. Data abstraction.

Reading: ``Compilation unit structure,'' in HP Pascal/HP-UX programmer's guide, pages 2-4 through 2-9.
January 24. Separate compilation under HP Pascal.
Exercise #1 assigned.

Reading: Walker, appendix B.2, pages 599-600.
January 26. Bytes and words.

Reading: Walker, appendix B.2, pages 600-601.
January 29. Booleans; designing the interface to an abstract data type.

Reading: Walker, appendix B.2, pages 601-604; handout on characters.
January 31. Characters; ASCII and Unicode.
Exercise #1 due.

Reading: Walker, appendix B.2, pages 603-605.
February 2. Bases of numeration; binary numerals.
Exercise #2 assigned.

Reading: Handout on converting between bases.
February 5. Algorithms for converting between bases.

Reading: Walker, appendix B.2, pages 605-606.
February 7. Arithmetic operations using binary numeration.

Reading: Handout on binary-coded decimal representations.
February 9. Binary-coded decimal representations; storing numbers as strings.
Exercise #2 due.

Reading: Walker, sections 5.1 and 5.2, pages 204-224, and section 5.6, pages 241-248.
February 12. Review of pointers and linked structures.
Exercise #3 assigned.

Reading: Handout on bignums.
February 14. Bignums.

February 16. Arithmetic operations on bignums.

Reading: Walker, appendix B.2, pages 606-609.
February 19. Signed integers; signed-magnitude and twos'-complement representations..
Exercise #3 due.

Reading: Ratios module.
February 21. Ratios.

Reading: Walker, appendix B.2, pages 609-613.
February 23. Reals.

Reading: Handout on IEEE representations of reals.
February 26. IEEE single-precision and double-precision reals.

February 28. Complex numbers.
Exercise #4 assigned.

Reading: Walker, appendix B.3, pages 613-620.
March 1. Arrays.

Reading: Walker, section 10.4, pages 417-424.
March 4. Quicksort.

March 6. Strings.
Exercise #4 due.

Reading: ``Allocation and alignment,'' in HP Pascal/HP-UX programmer's guide, pages 5-1 through 5-17 and 5-22 through 5-27.
March 8. Records; packing of data structures.

Reading: Walker, section 2.4, pages 68-75.
March 11. Unions.

March 13. Mid-semester examination.

Reading: Walker, section 2.5, pages 74-88, and sections 11.1 through 11.3, pages 435-451.
March 15. Files.

Reading: Handout on lists.
April 1. Lists.
Exercise #5 assigned.

Reading: Walker, section 10.1, pages 387-398.
April 3. Linear and binary search algorithms.

Reading: Walker, section 10.4, pages 412-416.
April 5. Mergesort.

Reading: Walker, section 5.4, pages 228-235.
April 8. Sets.

Reading: Walker, chapter 9, pages 355-383.
April 10. Graphs and relations.
Exercise #5 due.

Reading: Graphs module.
April 12. Implementing graphs.

April 15. Properties of relations.

Reading: Walker, chapter 6, pages 257-281.
April 17. Stacks.
Exercise #6 assigned.

Reading: Walker, chapter 7, pages 282-300.
April 19. Queues and radix sorting.

Reading: Handout on radix sort; Walker, chapter 4, pages 153-197.
April 22. Recursion.
Exercise #6 due.

Reading: Walker, sections 8.3 and 8.4, pages 313-333.
April 24. Binary trees.

Reading: Handout on searching and sorting with binary trees.
April 26. Searching and sorting with binary trees.

Reading: Walker, section 8.6, pages 342-346.
April 29. Trees.

Reading: Handout on priority queues.
May 1. Priority queues.
Exercise #7 assigned.

Reading: Walker, section 10.4, pages 408-412.
May 3. Heapsort.

Reading, Walker, pages 398-401.
May 6. Hashing methods.

Reading: Handout on hash tables.
May 8. Hash tables and searching.
Exercise #7 due.

May 10. Review.

May 14, 9 a.m. Final examination.

Similar courses
elsewhere

CS 206, ``Data structures'' (Bryn Mawr College)
CS 231, ``Data structures and algorithms'' (Colby College)
CPSC 215, ``Data structures and algorithms (C++)'' (Trinity College)
CSCI 330, ``Data structures and algorithms'' (College of Charleston)
COP 3530, ``Data structures and algorithms'' (University of Florida)

Interesting links

Adams, Glenn. ``Unicode home page'' (1994, 1995). http://www.stonehand.com/unicode.html.

``Extended Pascal ISO 10206:1990'' (1991). ftp://ftp.digital.com/pub/DEC/Pascal/iso10206.ps.gz.

Shipman, John W. ``TCC Help: What is the ASCII character set?'' (August 12, 1995). http://nmt.edu/tcc/help/ascii.html.

Unicode, Inc. ``Unicode 1.1 composite name list'' (July 5, 1995). ftp://unicode.org/pub/MappingTables/UnicodeDataCurrent.txt.


This document is available on the World Wide Web as

http://www.math.grin.edu/~stone/courses/fundamentals/

created December 26, 1995
last revised May 21, 1996