Syllabus
CSSE-221: Fundamentals of Computing, Honors
Rose-Hulman Institute of Technology
Department of Computer Science and Software Engineering
Fall term, 2004-2005
Catalog Course Description
This course is intended for students who have sufficient programming
experience to warrant placement in an accelerated course covering the
topics from CSSE 120 and CSSE 220. This course will satisfy the
prerequisite requirements for courses that have CSSE 220 as a
prerequisite. Students who receive a penalty grade in CSSE 221 may
grade replace it with CSSE 220.
Students with a score of 4 or 5 on the Computer Science A or AB
Advanced Placement exam may enroll in CSSE 221. Upon successful
completion of CSSE 221 students will also be awarded 4 credits for
CSSE 120. Furthermore, students with a score of 4 or 5 on the Computer
Science AB Advanced Placement exam who complete CSSE 221 with a grade
of C or better will be awarded a further 4 credits for CSSE 230.
Prerequisites
A score of 4 or 5 on either CS AP exam or permission of
instructor. Permission of instructor is typically given when a student
has at least two years of high-school programming experience or
equivalent and working knowledge of objects and object oriented
programming.
More importantly, you need to bring a willingness to learn on your own
and from others. Furthermore, we expect you to further the learning of
others.
Finally, I hope you bring enthusiasm, curiosity, perseverance, and a
"can do" attitude towards the course.
If you have a solid background in another object-oriented language
(e.g., C++), you should be able to easily and quickly gain the
necessary background in Java.
Instructors
- You!
- The lab assistant [TBA]
- Mike
Course Objectives
This course develops problem solving skills and introduces both
fundamental concepts of computer science and current practices of
object-oriented software development. Students complete a series of
projects requiring the choice of appropriate algorithms and the use of
procedural abstraction, control constructs, and elementary data
structures. The projects explore current practices of object-oriented
software development, such as multi-threaded event-driven programming,
the development of graphical user interfaces, interaction among
objects, networking, database applications, recursion as an example of
functional programming, abstract data types and encapsulation to
enable software reuse and assist in software maintenance.
Students complete some projects individually, some in small groups,
and one in a challenging multi-week team project. The use of a
disciplined design process is emphasized in each of the projects,
including design, good programming style, thorough testing, and
space/time efficiency analysis.
Course Outcomes
Students are expected to be proficient at the following topics and skills.
- The software development process as it relates to requirements
elicitation, design of software systems, efficient implementation of
the sofware systems, testing, and delivery of software.
- Object oriented design and programming
- UML class diagrams
- Javadoc
- OO tools, including: interfaces, polymorphism, interacting
objects, event-driven programming, threads, collections,
encapsulation, networking, code reuse through inheritance, genericity,
method abstraction, functors. [review and add]
- Recursion
- Data structures up to trees.
- Sorting and searching
- Basic analysis of algorithms
Textbooks
- Mark Allen Weiss: Data Structures and Problem Solving using Java (2nd ed.)
- Gittleman: Advanced Java: Internet Applications (2nd ed.)
Both books are also being used in CSSE 230.
More to come