CS U211 Fundamentals of Computer Science 1 (4 SH)
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.
An interest in learning about computer science in depth and a solid foundation in basic mathematical thinking.
How to Design Programs, Felleisen, Flatt, Findler, Krishnamurthi, MIT Press, 2000.
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
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.