CSE 211
Fundamentals of Computing I
09/18/02
Fall Semester
CSE 211Fundamentals of Computing I(4-0-4)
 This course is the first of a two-course sequence that introduces students to realm of computing and teaches them how to use computers effectively in problem solving. Student will learn how to formulate data and procedural abstractions, and apply basic problem solving strategies and techniques to problems from different domains. Students are automatically enrolled in the accompanying lab section, in which students will get practical hands-on experience with the material covered in the lecture.
  
Text: Harold Abelson and Gerald J. Sussman with Julie Sussman, Structure and Interpretation of Computer Programs, 2nd, McGraw-Hill, , 1996, 0-262-01153-0
 
References:
Faculty-in-Charge: Matthias Scheutz
 
Course Goals:This course fundamental techniques of programming as a foundation for more advanced study of computer science. Considerable attention is devoted to developing effective software engineering practice, emphasizing such principles as design, decomposition, encapsulation, procedural abstraction, testing, and software reuse. Topics include standard programming constructs problem-solving strategies that emphasizes algorithmic strategies over syntactic detail. The primary aim of this course is to develop the student's problem solving abilities, while introducing various aspects of programming languages (object-oriented programming, parallel programming, language design, etc.). By using a simple and elegant language (such as SCHEME) the student will be able to concentrate on the methodologies and modes of thinking about the development of complex systems.
Prerequisites:EG 111/112
Co-requisites:
  
Topics: Number of Lectures
  Graphs and trees 3
  Fundamental programming constructs3
  Algorithms and problem-solving2
  Fundamental data structures6
  Recursion5
  Basic algorithmic analysis2
  Algorithmic strategies2
  Fundamental computing algorithms4
  Basic computability1
  Overview of programming languages1
  Declarations and types1
  Abstraction mechanisms2
  Functional programming4
  Concurrency2
  Software design1
  Software tools and environments1
  History of computing1
  
Course Content:
Course Grading:
 Individual Assignments 25
 Group Assignments 25
 Participation and Attendance 5
 Short Examinations (WebCT) 15
 Final Exam (In Class) 30
  
  
Computer Usage:The homework will involve programming assignments using the language SCHEME. All students need to have an account on the engineering computer cluster. All programming tools needed for the programming problems in this course will be made available on the cluster machines. The engineering cluster (i.e., the Sun SPARC architecture) is the only computing environment guaranteed to be supported for this course. Students who desire to work in other environments/architectures (i.e., PC under WINDOWS9x) may do so, but must also assume full responsibility for porting any necessary software, data, etc. to the other environment/architecture.
Laboratory Usage:There will be a one-hour laboratory meeting once a week, where students will get the chance to implement algorithms presented in the lecture and to do programming assignments that will be checked by the TA teaching the lab section then and there.

In addition to the lab section, where you can your TA questions about the course material, there will be scheduled cluster hours, where undergraduate teaching assistants are avaible to answer questions.

Special Consideration: