Course Title:
CS U211
Fundamentals of Computer Science 1 (4 SH)
Course Descritption
Introduces the fundamentals of program design via study of increasingly complex
data definitions: structures, containment, unions, self-referential, mutually
referential. In addition, the course studies design via generative recursion,
accumulator-style functions, and mutation of variables and structures. The course
also introduces models of computations, which explain what programs do when they
are applied to inputs.
Prerequisites:
An interest in learning about computer science in depth and a solid foundation in
basic mathematical thinking.
Textbooks:
How to Design Programs, Felleisen, Flatt, Findler, Krishnamurthi, MIT Press, 2000.
Topics Covered
Computers and the nature of computation
(Formal) models of computation
functions, function definitions
conditional computation
structures, structure definitions
mutation
Information vs. Data
Structure of data:
composite
containment
union
self-referential
mutually referential
cyclically defined
Program design and design recipes:
design based on the structure of data
extensional equality of structured data;
(automated) testing
accumulators
designing abstractions
generative recursion
state and mutation
intensional equality of structured data
Course Outcomes
Upon completion of this course, a student should be able to:
Complete data analysis and definiton for problems that require the use of
composition, containment, union, and self-reference, including the representation
of the structure as a class diagram.
Design programs to solve problems that consume and produce data structures based on
composition, containment, union, and self-reference.
Design test suites for these programs and evaluate the outcomes.
Design simple abstractions and test the design.
Design programs that mutate state variables and structures and test outcome and
effects.
Measurement of Course Outcomes
How will the outcomes be measured and verified through:
Weekly programming homeworks.
Weekly short paper-and-pencil quizzes
Two to four major exams.
Inclusion of student's work in an electronic portfolio.