CS101I. Programming Fundamentals

Introduces the fundamental concepts of procedural programming. Topics include data types, control structures, functions, arrays, files, and the mechanics of running, testing, and debugging. The course also offers an introduction to the historical and social context of computing and an overview of computer science as a discipline.

Prerequisites: No programming or computer science experience is required. Students should have sufficient facility with high-school mathematics to solve simple linear equations and to appreciate the use of mathematical notation and formalism.

Syllabus:

Units covered:
PF1 Fundamental programming constructs   10 hours (9 core + 1)
PF2 Algorithms and problem-solving   3 core hours (of 6)
PF3 Fundamental data structures   2 core hours (of 14)
AR2 Machine level representation of data   1 core hour (of 3)
AR3 Assembly level machine organization   2 core hours (of 9)
OS1 Overview of operating systems   1 core hour (of 2)
NC1 Introduction to net-centric computing   1 core hour (of 2)
PL3 Introduction to language translation   1 core hour (of 2)
PL4 Declarations and types   3 core hours
PL5 Abstraction mechanisms   3 core hours
HC1 Foundations of human-computer interaction   1 core hour (of 6)
GV1 Fundamental techniques in graphics   1 core hour (of 2)
SP1 History of computing   1 core hour
SP2 Social context of computing   1 core hour (of 3)
SP4 Professional and ethical responsibilities   1 core hour (of 3)
SP6 Intellectual property   1 core hour (of 3)
SE1 Software design   3 core hours (of 8)
SE3 Software tools and environments   2 core hours (of 3)
SE4 Software processes   1 core hour (of 2)
  Elective topics   1 hour

Notes:
This course is part of an alternative implementation of the imperative-first introductory track that covers the fundamental programming concepts in three semesters rather than two. In terms of the curriculum, students should be able to move on to more advanced courses after taking either the sequence CS101I-102I-103I or the two-semester sequence sequence CS111I-112I, which covers the same material in a more concentrated fashion. Although covering programming fundamentals in two semesters has long been standard in computer science education, more and more programming topics can legitimately be identified as fundamental, making it more difficult to provide a complete introduction to this material in a single year. The CC2001 Task Force anticipates that three-semester introductory sequences will become increasingly common over the next decade and encourages departments and individual faculty to experiment with models along these lines.

Online resources for CS101I


 
CC2001 Report
December 15, 2001