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