The
Computer Science Program seeks to provide its students with a
solid foundation in the discipline. Such preparation requires
that students be able to research and analyze what are frequently
very complex problems, and to apply the knowledge they have gained
by designing and implementing appropriate solutions. Because the
techniques acquired in the study of computer science can be of
benefit in a wide variety of subject areas, the program aims to
produce liberally educated students who are able to communicate
clearly with those outside the discipline. Finally, the program
seeks to provide opportunities for students to gain practical
experience in applying what they have learned to real-world situations.
Consistent with the newest recommendations from professional
societies, the major in computer science seeksto provide a core
curriculum which assures breadth and emphasizes the roles of theory,
abstraction, and design. Because computer technology changes rapidly,
the major is concerned not so much with the details of current implementations
as with the intellectual foundations of computer science. Thus the
computer science major is enhanced by its setting in a liberal arts
institution which prides itself on providing a foundation for life-long
learning and on fostering excellent communication skills.
For more information on careers in computer science consult the
Association for Computing Machinery
Computer Science Faculty
- ALEX MCALLISTER
- Courses: Theoretical Foundations of Computer Science
- ART MOORE
- Courses: Computer Organization, Database Systems, Introduction to Networking Fundamentals
- JOSEPH
OLDHAM
- Courses: Introduction to Computer Science, Computer
Organization, Operating Systems, Software Development, Principles of Programming Languages, Software Engineering, Theoretical Foundations of Computer Science, Design and Analysis of Algorithms, and Special
Topics
- CHRISTINE
SHANNON
- Courses: Introduction to Computer Science, Intermediate
Programming and Data Structures, Design and Analysis of Algorithms,
Topics in Artificial Intelligence, Principles of Programming
Languages, Theory and Construction of Compilers, and Special
Topics
-
-
The Program Committee
Joseph Oldham (Chair), Anne Collins, Alex McAllister, Art
Moore, Christine Shannon, and student representative Zach Upton
Alumni News
The Alumni Newsletter is published twice a year. Current Alumni Newsletter
You can also browse through old issues.
Newsletter Archive
2002 |
|
|
2003 |
|
|
2004 |
|
|
2005 |
|
|
2006 |
|
|
2007 |
|
|
| 2008 |
|
|
Current
Majors:
-
Seniors
|
Juniors
|
| Elizabeth Denny |
Brittany Devine |
| Eric Hill |
Jessica Szweda |
| Carol Hummel |
Brad Vandiver |
| Drew McKinney |
Alex Waldrop |
| Zach Upton |
Alex Wegener |
| Brad Vandiver |
|
-
-
-
-
Current Minors:
-
Seniors |
Juniors |
| Chris Calitri |
Chris Dobbs |
| Tyshaun Lang |
Hunter Hayes |
| Allison Perkins |
|
| Yanni Yang |
|
-
-
-
-
-
-
-
Requirements
for the Major
CSC 117, 221, 223, 300, 332, 334;
MAT 170 or both MAT 140 and 141, MAT 190;
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 should complete CSC 117 during their Freshman
year but 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, 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 to complement their major or career objectives.
-
Computer
Science Courses
CSC 112 Digital Media
Images, sounds, video, even the web itself are all examples of digital media. This course examines digital media, from how information is represented in digital media to how we can manipulate the media. Examples include image filtering, steganography (hiding data in images or sound), splicing sounds, creating animations, and extracting data from the web. Manipulating media is a computational process. Some programming is required, but the the environment is friendly, the focus on media, and no prior programming experience is needed. Not open to students with credit for FRS 150.
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 pr actices 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 390 Programming Challenges (one credit hour)
An opportunity to apply ideas from data structures and the wider world of algorithmic problem solving to writing programs for solving challenging problems. Focus is on clever and interesting problems and the creative process of transforming the problem statement into a correctly running program. Prerequisite: CSC 223 or permission of the instructor.
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.
|
|