||Course Offerings | Computer Science
Division of Science and Mathematics
Joseph Oldham (chair);
Anne Collins, Alex McAllister, Art Moore, Christine Shannon;
Computer science is a rapidly evolving discipline, born in the mid-twentieth century with roots in mathematics, logic, and engineering. Computing has become a necessary tool in nearly every area of human endeavor: critical to our workplace production, to our communication, and a means to play and to express ourselves artistically. Regardless of what computer science seems to be at the beginning of a four year course of study, both the discipline itself and the student's understanding of it will have changed substantially by the end. However, certain themes endure.
Computer science deals with problems: identifying those that are solvable in a computing environment, developing and applying appropriate algorithms for their solution, and dealing computationally with their complexity. Frequently these problems appear in the midst of incomplete, contradictory, and changing information. Indeed, much of computer science is devoted to creating software solutions to problems. Software development and computing in general rely on theory, on formalism, on abstraction, and on principles from engineering, but require more.
Computer scientists must be able to apply their own knowledge and understanding of how to solve problems computationally to situations involving both diverse people and subject matters. Software is used in human systems and must be built for humans, and so computer scientists must learn how to accomplish this. Powerful computational tools are as subject to abuse and social side effects as are physical tools and computer scientists must understand the broader role and implications of their work.
One of the benefits of gaining this technical competence in a liberal arts setting is the opportunity to develop sound communication skills. And while a strong classroom foundation in the fundamentals is essential, the rewards of internships, summer jobs, and independent projects can also be profound. Upon graduation most majors have entered professional positions where they have been very successful, while others have first pursued graduate study in computing or other disciplines.
Requirements for the Major
MAT 170 or both MAT 140
and 141, MAT 190;
CSC 117, 221, 223, 300, 332, 334;
One foundations course selected from CSC 341, 342, 343;
One major project course selected from CSC 336, 410;
One applications course selected from CSC 250, 339, 347.
Prospective majors must complete CSC 117 no later than the fall term of their sophomore year and should complete MAT 190 by the end of the sophomore year. The CSC 117 class is open to non-programmers as well as to those with some programming experience.
Students are encouraged to supplement this preparation with additional courses in mathematics (especially MAT 130 and MAT 240), physics, and logic. In particular, students who plan on graduate study in computer science need to select additional courses in mathematics and science.
Requirements for the Minor
CSC 117, 223, 332;
MAT 190 and one of MAT 140, MAT 170;
One additional three or four hour CSC course numbered 221 or higher;
One additional three or four hour CSC course numbered 300 or higher.
Students should consult with an advisor to select appropriate courses which would complement their major or career objectives.
Computer Science Courses
CSC 111 Principles of Computer Animation
In this class students will learn the principles of computer animation developed by traditional animators. These principles involve a study of motion and the mind's ability to perceive motion. Principles include the notion of timing, squish and squash, arcs of motion, follow through and secondary action. The principles of animation may be applied to all forms of animation: traditional, stop-motion and computer assisted. Students will apply the principles of animation with the aid of 3D animation software. At the end of the course each student will develop a short animation clip. There are no prerequisites for this class.
CSC 114 3D Computer Modeling
In 3D modeling, an artist carefully creates all of the objects in the scene and lets the computer handle perspective, shadow and lighting effects. In this class students learn how to form the geometry of objects using polygons and how to texture objects using graphics. Students learn to model both inanimate and animate objects with attention to creating photorealistic models. No prereqisites.
CSC 117 Introduction
to Computer Science (four credit hours)
An examination of the ideas behind the operation of computers and
the Internet, with an emphasis on programming. Students learn to use selection,
repetition, function definition, structured types, and standard libraries
to build useful programs. Topics include databases, an introduction to
robotics, the basic operation of the Internet, and related social, legal,
and ethical issues. Prerequisite: basic skills in mathematics or permission
of the instructor.
CSC 150 Cyberporn: Seminar in Computing & Society (one credit hour)
This seminar in computing and society addresses the how technology that is driven by computing and broader society interact. Our focus is always on how the power, limits and design of the technology affect the use of and response to the technology in our culture. How is technology used? How does the technology limit or empower policy decisions? Cyberporn, pornography delivered via digital media, provides a rich background to discuss the power, the limits, the uses and abuses of technology, and how technology and social policy must interact. Students in this course are neither required nor specially privileged to view pornographic material. No prerequisites.
CSC 221 Computer Organization
A study of basic computer architecture. Topics include numerical representation
and arithmetic, the levels of computer organization (digital logic, microprogramming,
machine language, and macro language), internal machine processes (discrete
instruction execution, memory, registers, addressing, input/output considerations,
and synchronization), instruction sets (addressing, data flow, flow of
control, interrupts, and multitasking), and the assembly process (translation,
linking, loading, and the use of macros). Assembly language programming
is part of the course. Prerequisite: CSC 117 or permission of the instructor.
CSC 223 Intermediate Programming and Data Structures (four credit hours)
Continued instruction in the use of object oriented techniques. Study
of the standard data structures including lists, stacks, queues, trees,
and hash tables. Introduction to space and time complexity. Prerequisite:
CSC 117. Laboratory work is required.
CSC 250 Introduction to Networking Fundamentals
A study of the fundamental concepts of net-centric computing, i.e., computer communication, network concepts and protocols, management of networked applications, client-server computing, network security, and distributed systems. Programming activities are incorporated to expose students to typical real world networking environments. Prerequisite: CSC 221.
CSC 261 Introduction to Computational Science
This course will use real science problems from biology, chemistry and physics to introduce students to computational technologies to solve those problems. Upon completion of this course, students will have rudimentary programming skills, be able to model scientific processes, understand the algorithms behind search programs and know the advantages and pitfalls of computer generated solutions to complex mathematical problems. Prerequisite: MAT 141 or MAT 170 and one of the following: BIO 110, CHE 131 or PHY 110; or permission of the Instructor .
CSC 300 Software Development
A study of the practices and techniques used in the development of modern software solutions. Topics are chosen from standard APIs, event models, graphical user interfaces, human-computer interaction, multi-threading, database connectivity, library development, debigging methods, exception handling, design patterns and advanced topics in object oriented design. Most development requires the same programming language as CSC 223, with new development tools introduced as appropriate. Students should expect to develop at least one portfolio quality piece of software. Prerequsite: CSC 223.
CSC 332 Design and Analysis of Algorithms
An introduction to the theoretical and empirical evaluation of algorithms
and to some fundamental concepts in algorithm design and implementation.
Topics include worst-case vs. average-case performance, complexity classes,
recurrence relations, problem-solving strategies, heuristics, and NP-complete
problems. Prerequisite: CSC 223 and MAT 190.
CSC 334 Theoretical Foundations of Computer Science
An introduction to the study of abstract models of computation and
languages, and to the use of formal methods in computer science. Topics
include Turing machines, Church's thesis, decision problems and undecidable
problems, finite state automata and regular expressions, context free
grammars and pushdown automata, symbolic logic, axiomatic semantics, and
formal correctness proofs for small programs. Prerequisite: MAT 190 and
CSC 117 or permission of the instructor.
CSC 336 Software Engineering
An introduction to methodologies used by teams to design and construct
software. Prerequisite: CSC 300.
CSC 339 Topics in Artificial Intelligence
An introduction to some of the important ideas in artificial intelligence
from the point of view of an intelligent agent. Topics include knowledge
representation, pattern matching, automated reasoning, and searching techniques.
Applications are selected from game playing, problem solving, and autonomous
robots. Prerequisite: CSC 223 and MAT 190 or permission of the instructor.
CSC 341 Principles of Programming Languages
Various languages are used to study principles such as methods of
representing data types, sequence control, data control, type checking,
and run-time storage management. Includes an introduction to language
translation and distributed and parallel programming constructs. Emphasizes
differences in programming paradigms. Prerequisite: CSC 223.
CSC 342 Theory and Construction of Compilers
A study of ideas and techniques involved in the writing of a compiler
for a high-level language, including grammars, finite state machines,
top-down and bottom-up parsing, and symbol tables. Includes the writing
of an actual compiler. Prerequisite: CSC 221 and CSC 223.
CSC 343 Operating Systems
An introduction to the role of an operating system in the management
of memory, the processor, devices, and files. Topics covered include scheduling,
memory management, deadlock, file structures, and concurrency. Examples
are taken from actual systems. Prerequisite: CSC 223 and CSC 221 or permission
of the instructor.
CSC 347 Computer Graphics
Essential topics of computer graphics necessary in the design of data
structures for practical implementation in the development of software
as well as the potential and limitations imposed by existing hardware.
Raster-scan and vector-scan techniques are examined. Topics also include
clipping, window management, color, and hidden line and hidden surface
removal.. Some topics from linear algebra are included to support the
development of primitives, two-dimensional figures, and three-dimensional
transformations. Prerequisite: MAT 141 or 170 and CSC 223 or permission
of the instructor.
CSC 350 Event Driven Programming
Students further their understanding of and skills in problem solving, and software design and development by focusing on problems in the graphical user interface (GUI). Event models, standard APIs, concepts of human computer interaction, and new development tools are introduced. Most development requires the same programming language as CSC 223, although other languages may be introduced for specific assignments or to illustrate points. Prerequisite: CSC 223, sophomore standing.
CSC 410 Database Systems
A study of the fundamental concepts underlying the design, implementation,
and application of database systems. Topics include the historical development
of database management systems, the common elements of modern database
systems, entity relationships, the relational model of system implementation,
data constraints, and the Structured Query Language. Programming activities
are incorporated to expose students to typical database applications.
Prerequisite: CSC 223 and MAT 190.