# SCT WWW Information System

## Syllabus Information

Fall 2016 Semester
Jun 04, 2023
 Use this page to maintain syllabus information, learning objectives, required materials, and technical requirements for the course.

Syllabus Information
CS 2500 - Fundamentals of Computer Science 1
Associated Term: Fall 2016 Semester
Learning Objectives: Recognize when examination of a phenomenon or situation can benefit from problem solving techniques and analyses that use formal reasoning.Use their expertise in some applications of formal reasoning and know when to call upon domain experts when a problem is beyond their personal expertise.Generate artifacts that require formal reasoning and planning. These artifacts might include logical proofs, mathematical computations, software, simulations, problem solutions, or plans/analyses in a variety of disciplines that require a formal, systematic component.The programming and design processes described in the discussion of category 1 already illustrate the degree to which formal reasoning is used throughout the course. Let us elaborate.
The language Scheme is actually an implementation of one of the two bedrock foundations of the theory of computer science, namely, the lambda calculus of Alonzo Church defined in the 1930s. Church showed how the definition of functions which he called lambdas could be used to describe all computations that could be systematically executed.
The design recipe of the course first teaches students how to work with atomic entities such as numbers and symbols. The next step is "named collections" in which each component is identified by a name. The next step after that is lists. In a list, you may name the list itself, the first item in the list, and the rest of the list. You cannot directly name all of the items in the list. Instead, you must learn list traversal in order to get at and process all of the list items. Once you have lists, you can then construct lists-of-lists, trees, graphs, or any other complex data structure you might require. The design reciple continues to provide the formal guidance for designing functions to traverse these complex structures. The pinnacle of the design process in when the data being acted upon are functions or even combinations of functions and other kinds of data.
This summary should explain why and how formal reasoning is fully embedded in the course.
Formulate a question that can be answered through investigation or a challenge that can be addressed through research or design.Develop and use models based on evidence to predict and show relationships among variables between systems or components of systems in the natural and/or designed world.Use and question scientific principles and practices to evaluate issues raised by the interplay of science, technology, and society.CS 2500 is in the zone of the designed world. The course textbook is entitled "How to Design Programs" [written by Matthias Felleisen of CCIS]. The opening paragraph of the course web site sets the design tone:
This course is an introduction to computing and programming. Its major goal is to introduce students to the principles of systematic problem solving through programming and the basic rules of computation.
The course uses the functional programming language Scheme which is better suited to teaching the principles of design than many commercial languages. The textbook teaches a "design recipe" that leads students to structure the behavior of a function in parallel to the structure of the data on which it will act. The design recipe promotes the idea that a complex function should not try to do everything inside itself. Rather, a complex function should call on one or more simpler functions to help with its work. A complex function may also use "recursion", that is, call on itself but pass to itself a simpler instance of the data on which it is working. In that way, after many stages, a complex problem may be reduced to trivial cases in which the work may be done directly. The language views a function definition to be a data object. This enables "meta-programming" in which a supervisor function may run a standard type of task but vary the details based on whatever specific function is passed to it as its data.
The design ideas in this course bring students to an advanced level very quickly. They also provide an intellectual perspective that permits the student to later understand the strengths and weaknesses of more traditional commercial language.
An extra benefit is that Javascript, the premier language for web programming, is actually a variation of Scheme in disguise.

Required Materials:
Technical Requirements: