CSCI C335 Computer Structures Teaching/Learning Goals
The Who and What of C335
Who - Anyone with an interest in understanding computer architecture,
particularly someone who needs to know how a computer works, such as a
programmer. Background should include two semesters of programming that
includes a C, C++, or Java language and basic data structures such as queues
and lists (C201 and C202 which may be taken concurrently).
What - The lecture topics generally cover the theoretical basis
of the stored program computer organization most commonly used today and
the Intel family of processors specifically. A strong effort is made to
connect the familiar high level language concepts such as function, parameters,
recursion, and data structures to the machine level implementation in order
to better understand high level languages implementation and their relation
to a computer architecture. Main topics include the physical organization
of computer systems, standard computer processor organization, and characteristics
of processor operation.
Weekly exercises closely complement lecture topics. The exercises rely
heavily upon the use of assembly language level programming to practice
concepts discussed. While the purpose of the course is not to train assembly
language programmers, active learning involvement to understand how computers
operate is best promoted through using the computer which, for this course,
translates to implementing programs. While demanding extreme attention
to detail, all programming exercises are short, usually one or two pages.
A final project offers the opportunity to delve deeper into an interesting
topic selected by the instructor, past projects have implemented a command
line processor for MS-DOS and a Web server. More specific information can
be obtained by reading the following discussion of course goals or by examining
exercises listed as home works on the course syllabus.
CSCI C335 Learning Goals
The learning goals of each computer science course strive to capture
intended learning outcomes. The goals are expressed using the terms that
follow. These terms describe the level of familiarity (most to least) with
respect to various kinds of material and procedures.
-
Mastery means the student will be able to exhibit knowledge of the
material and/or skill with the procedure, in a new but appropriate context,
even when not instructed to do so.
-
Familiarity means the student will be able to answer questions about
the material and/or to use the procedure, in a new but appropriate context,
when instructed to do do.
-
Exposure means the student will have heard the term and/or seen
the procedure, but may not be able to discuss or use it effectively without
further instruction.
The C335 learning goals cover important areas recommended jointly in a
report by the Association of Computing Machinery (ACM) and the Computer
Society of the IEEE in 2001 for university computing curricula. These international
organizations were established to promote academic and professional excellence
in the computer sciences. The complete baccalaureate curricula list consists
of fourteen subject areas, of which a portion are covered in this course,
primarily those areas which better prepare the student to succeed in subsequent
Indiana University Southeast computer science courses and as professional
computer scientists. Certain of these subjects listed below have been presented
in previous courses or will recur in subsequent courses.
-
Mastery
-
AR2 - Machine level representation of data (1)
-
AR3 - Assembly level machine organization (2)
-
PF1 - Fundamental programming constructs (1) Conditional and iterative
control structures; functions and parameter passing.
-
Familiarity
-
AR2 - Machine level representation of data (2)
-
AR3 - Assembly level machine organization (4)
-
AR4 - Memory system organization and architecture (1)
-
AR5 - Interfacing and communication (1)
-
PF1 - Fundamental programming constructs (5) Conditional and iterative
control structures; functions and parameter passing.
-
PF4 - Fundamental data structures (6) Arrays; Strings and string processing;
data representation in memory; static, stack allocation; pointers and references.
-
PF5 - Recursion (2) Recursive mathematical functions; implementation of
recursion.
-
PF7 - Using APIs (2) API programming.
-
Exposure
-
AR1 - Digital logic and digital systems (0)
-
AR3 - Assembly level machine organization (4)
-
AR4 - Memory system organization and architecture (2)
-
AR5 - Interfacing and communication (1)
-
AR6 - Functional organization (0)
-
AR7 - Multiprocessing and alternative architectures (0)
Design of C335 to Achieve These Goals
Computer science demands competency in a range of skills. Therefore,
students benefit from the guided practice in the environment of a university
class. To facilitate this, C335 includes the following:
-
Students complete weekly programming assignments aimed at developing the
foundational skills.
-
Class time is divided between instructor lecture, discussion, and in class
exercises. Individual student questions serve to guide the class discussion.
-
Structured programming methodology based on the C language is used throughout
the course to assist students in abstracting the details of writing assembly
programs.
-
Programming exercises are available as Web-pages and are discussed in class.
-
Most questions arise when students are working on exercises outside of
class. Students are encouraged to contact the instructor directly or by
emailing their questions and code of the troublesome exercise for guidance.
-
In recognition that problem solving is often an iterative process, assignments
that are less than perfect can be submitted for instructor evaluation,
refined and resubmitted for additional credit.
Document last modified: