The Department of Computer Science offers a B.S. and a M.S. in Computer Science. The undergraduate program prepares students for professional careers and for advanced degree programs. Students learn to solve problems using the tools of computer science: networking, database management, artificial intelligence, 3D game development, graphics, web technologies, etc. Not only do students learn the science of the field in this program, but also the art of computer science as a creative endeavor. For information on the M.S. program in Computer Science, see the Graduate Programs catalog.
The Program Educational Objectives for the B.S. Degree in Computer Science are that the Program will produce graduates who will be:
- Working as successful practicing computing professionals or pursuing graduate education.
- Evolving in complex technological environments such as those found in the workplace using firm scientific and mathematical principles.
- Working effectively in teams and communicating to others orally, in writing, or by graphical means what they have learned.
- Pursuing life-long learning opportunities as informed members of their communities and the computing field.
The Student Outcomes for the B.S. Degree in Computer Science are that the Program enables students to attain by the time of graduation:
- An ability to apply knowledge of computing and mathematics appropriate to the discipline.
- An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution.
- An ability to design, implement, and evaluate a computer-based system, process, component or program to meet desired needs.
- An ability to function effectively in teams to accomplish a common goal.
- An understanding of professional, ethical, legal, security and social issues and responsibilities.
- An ability to communicate effectively with a range of audiences.
- An ability to analyze the local and global impact of computing on individuals, organizations, and society.
- Recognition of the need for and an ability to engage in continuing professional development.
- An ability to use current techniques, skills, and tools necessary for computing practice.
- An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices.
- An ability to apply design and development principles in the construction of software systems of varying complexity.
Requirements for the Computer Science Major (GEP)
The curriculum requires a total of 40 courses:
A. General Education Program (GEP) Requirements
B. Major Requirements
C. Free Electives
Note that a total of one year of science and mathematics courses are required with at least one half year of mathematics.
A. GEP Requirements
I. Signature Courses
Jesuit Tradition Common Core
1. Philosophy: Moral Foundations
2. Theology: Faith, Justice, and the Catholic Tradition
Cultural Legacy Common Core (For non-transfer students only)
3. English: Texts and Contexts
4. History: Forging the Modern World
Signature Variable Core
5. First Year Seminar (For non-transfer students only)
6. Faith & Reason Course
II. Variable Courses
1. Fine Arts or Literature
2. Mathematics (Beauty)
3. Natural Science (one 4-credit course with laboratory)
4. Non-native language (2 courses)
5. Social/Behavioral Science
6. Philosophy (Philosophical Anthropology)
7. Theology (Religious Difference)
III. Integrative Learning
1. Two math courses from: Calculus, Applied Calculus, Linear Algebra, Number Theory, Numerical Analysis, Operations Research
2. One Natural Science (one 4-credit course with laboratory)
Note that in addition to the above specific courses, students must take three overlay courses:
- Ethics Intensive
- Writing Intensive
- Globolization, Diversity, or Non-Western Cultures
B. Major Requirements
1. CSC 120: Computer Science I
2. CSC 121: Computer Science II
3. CSC 240: Discrete Structures I
4. CSC 241: Discrete Structures II
5. CSC 201: Data Structures
6. CSC 202: Computer Architecture
7. CSC 261: Principles of Programming Languages
8. CSC 281: Design and Analysis of Algorithms
9. CSC 310: Computer Systems
10. CSC 315: Software Engineering
11. CSC 495: Senior Project
12. Four electives including any CSC courses numbered 340 or above.
13. Two math courses from: Calculus, Applied Calculus, Applied Statistics, Linear Algebra, Probability and Statistics, Number Theory, Numerical Analysis, Operations Research
C. Free Electives
Minor in Computer Science
Advisor: Dr. Wei
With the approval of the Department, students may minor in Computer Science. Upon acceptance, the advisor will assist in selecting courses appropriate for their area of interest. Students who elect this minor must take six courses which include Computer Science I, Computer Science II, Data Structures, and three Computer Science electives numbered 340 and above.
Double Major in Computer Science
Advisor: Dr. Wei
With the approval of the Department, students who wish to double major in Computer Science and another discipline shall first satisfy the Major's requirements and then take an additional CSC elective course.
Requirements for Departmental Honors
Requirements for departmental honors are found under Honors Program and in the brochure published annually by the Director of the Honors program.
Computer Science Offerings
FYS 150 Computer Models (3 credits)
FYS 150 Robot Vehicles (3 credits)
CSC 110 Building Virtual Worlds (3 credits)
A gentle introduction to programming with user-friendly software (Alice). Students will use 3D animated interactive virtual worlds to develop an understanding of basic programming constructs. Open to all students. Computer science majors may take this course to prepare for CSC 120. This course presupposes no previous programming experience.
CSC 120 Computer Science I (4 credits)
Computer programming for beginners. Very little prior knowledge regarding how computers work is assumed. Learn how to write understandable computer programs in a programming language widely used on the Internet. Go beyond the routine skills of a computer user and learn the programming fundamentals: data, variables, selection, loops, arrays, input/output, methods and parameter passing, object and classes, abstraction. Take what is learned and write programs for use on the Internet. One hour per week of the course is a required laboratory. Prerequisite: none.
CSC 121 Computer Science II (4 credits)
The course covers intermediate programming techniques emphasizing advanced object oriented techniques including inheritance, polymorphism, and interfaces. Other topics include recursion, exception handling, design patterns, simple GUI programming, and dynamic containers such as linked lists, stacks, queues, and trees. Prerequisite: CSC 120 Computer Science I, or permission of instructor.
CSC 240 Discrete Structures I (3 credits)
Topics include: finite probability space, conditional probability, Bayes' theorem, permutations and combinations, statistics and sampling distributions, the Central Limit Theorem, hypothesis testing, correlation, regression analysis, data encoding, channel capacity, the Shannon coding theorem. Data analysis projects using an appropriate statistical package will be assigned. Prerequisite: None.
CSC 241 Discrete Structures II (3 credits)
Topics include: functions, relations, propositional and first order predicate logic, set theory, proofs and their construction. The course will use a declarative language as a tool to support concrete implementations of the mathematical ideas. Prerequisite: CSC 120 Computer Science I, or permission of instructor.
CSC 201 Data Structures (34 credits)
The course covers fundamental data structures, algorithms for manipulating and retrieving information from these data structures, and techniques for analyzing their efficiency in terms of space and time. The distinction between an Abstract Data Type and its implementation is emphasized. Topics include lists, vectors, trees (general trees, binary search trees, and balanced trees), priority queues, hashing, graphs, and various searching and sorting algorithms. Prerequisite: CSC 121 Computer Science II and CSC 150 Discrete Structures.
CSC 202 Computer Architecture (3 credits)
Overview of computer system organization, hardware, and communications. Introduction to combinational and sequential logic, arithmetic, CPU, memory, microprocessors, and interfaces. CISC vs. RISC processors. Assembly language programming, microarchitecture, and microprogramming on a variety of processors. Prerequisite: CSC 121 Computer Science II and CSC 150 Discrete Structures.
CSC 261 Principles of Programming Languages (3 credits)
The general principles underlying programming languages, including such topics as syntax and its specification, data types, data control, flow control, storage management and support for design patterns. Examples drawn from a variety of programming languages, including functional, logical and procedural languages, will be presented. Prerequisite: CSC 201 Data Structures.
CSC 281 Design and Analysis of Algorithms (3 credits)
This course presents fundamental techniques for designing efficient computer algorithms and analyzing their running times. Topics include asymptotic, solving summations and recurrences, sorting and selection, graph algorithms (depth-first and breadth-first search, minimum spanning trees, and shortest paths), algorithm design techniques (divide-and-conquer, dynamic programming, and greedy algorithms), and introduction to NP-completeness. Prerequisite: CSC 201 Data Structures.
CSC 310 Computer Systems (3 credits)
An overview of operating systems and the software required to integrate computer hardware into a functional system. Topics include operating systems structure, interrupt driven systems, concurrency, memory management, file systems and security, and system calls. Prerequisite: CSC 261 Principles of Programming Languages.
CSC 315 Software Engineering (3 credits)
Principles of designing large programs, including issues of specification, documentation, design strategies, coding, testing and maintenance. Students work in small groups to design and implement a major software project. Prerequisite: CSC 281 Design and Analysis of Algorithms.
CSC 341 Introduction to Computer Graphics (3 credits)
The course provides an introduction to the principles of computer graphics. The emphasis will be placed on understanding how the various elements that underlie computer graphics interact in the design of graphics software systems. Topics include pipeline architectures, graphics programming, 3D geometry and transformations, modeling, viewing, clipping and projection, lighting and shading, texture mapping, visibility determination, rasterization, and rendering. A standard computer graphics API will be used to reinforce concepts and the study of basic computer graphics algorithms. Prerequisite: CSC 201 Data Structures.
CSC 342 Computer Vision (3 credits)
Computer vision is the science of analyzing images and videos in order to recognize or model 3D objects, persons, and environments. Topics include the underlying image formation principles, extracting simple features like prominent points or lines in images, projecting a scene to a picture, tracking features and areas in images and make a mosaic, making an image-based positioning system, obtaining 3D models from two or more images, and techniques to recognize simple patterns and objects. The class includes programming exercises and hands-on work with digital cameras and laser scanners. Prerequisite: CSC 201 Data Structures.
CSC 343 Interactive 3D Game Development (3 credits)
This course will cover the tools and techniques for programming interactive games and virtual reality simulations. The focus is primarily on programming aspects, including event loops and execution threads, rendering and animation in 3D, terrain/background representation, polygonal models, texturing, collision detection and physically-based modeling, game AI, and multi-user games and networking. Although this course has a significant programming focus, other topics briefly covered will include the history of computer/video game technology, game genres and design principles, and the social impact of games. Prerequisite: CSC 201 Data Structures.
CSC 344 Human Computer Interaction (3 credits)
User models: conceptual, semantic and syntactic considerations; cognitive and social issues for computer systems; evaluating the interface; direct manipulation; architectures for Interaction; Students will design and implement a GUI based application. Prerequisite: CSC 201 Data Structures.
CSC 351 Database Management Systems (3 credits)
The course will cover the concepts and structures necessary to design and implement a relational database system. Topics to be covered: entity-relationship and relational data models, relational algebra, SQL, normalization, file organization, indexing, hashing, and enterprise-wide web-based applications. Prerequisite: CSC 201 Data Structures.
CSC 352 Data Communications and Networking (3 credits)
Topics include mathematical foundations of data communications, logical and physical organization of computer networks, the ISo and TCP/IP models, communication protocols, circuit and packet switching, the Internet, LAN/WAN, client/server communications via sockets, routing protocols, data encryption/decryption and network security issues. Prerequisite: CSC 201 Data Structures.
CSC 353 Internet Application Development (3 credits)
This course will attempt to give you experience in designing Internet applications. A student finishing this course should be able to design, implement, and maintain a large community or e-commerce web site. They should leave the course with an understanding of a variety of Internet protocols and markup languages, a knowledge of at least one common scripting tool, an understanding of how to implement a database back-end into a large-scale site, and the ability to critically assess the usability of both their design and the design others. Prerequisite: CSC 201 Data Structures.
CSC 354 Web Technologies (3 credits)
Topics include organization of Meta-Markup languages, Document Type Definitions (DTD), document validity and well-formedness, style languages, namespaces, Transformations, XML parsers, and XQuery. Course includes programming projects. Prerequisite: CSC 201 Data Structures.
CSC 355 Cryptography and Network Security (3 credits)
Topics include classical cryptosystems, public and symmetric cryptography, key management, digital signatures, cipher techniques, authentication and federated identity management. Course also covers concepts relating to crypto-virology, malware, viruses, Trojan horses, worms and other types of infectors as they relate to network security. Course includes programming projects. Prerequisite: CSC 201 Data Structures.
CSC 361 Formal Languages and Compiler Construction (3 credits)
Introduction to formal languages and abstract machines: finite automata and regular sets, context free grammars and pushdown automata. Syntax trees and decorated trees. Application of these ideas to the construction of compilers and other language translation software. The course will include programming projects that will illustrate the major features of compiler construction. Prerequisite: CSC 201 Data Structures.
CSC 362 Artificial Intelligence (3 credits)
The course covers fundamental concepts such as role of logic in reasoning, deductive proofs, and blind and informed search techniques. Additional topics may include inductive learning, genetic algorithms, decision trees, planning, natural language processing, game trees and perceptron learning. Prerequisite: CSC 201 Data Structures.
CSC 363 Theoretical Foundations (3 credits)
Introduction to formal models of languages and computation. Topics covered include finite automata, regular languages, context-free languages, pushdown automata, Turing machines, computability, and NP-completeness. Prerequisite: CSC 201 Data Structures.
CSC 370 Topics in Computer Science (3 credits)
The course introduces students to recent theoretical or practical topics of interest in computer science. Content and structure of the course are determined by the course supervisor. The special topic(s) for a given semester will be announced prior to registration. Prerequisite: CSC 201 Data Structures.
CSC 490 Internship (3 credits)
The course goals are: to gain first-hand experience of the daily activities of professionals in computer science and related fields, to verify an interest in a particular area of computer science, to develop and hone skills required for computer science professions, to establish contacts outside the academic community who will facilitate a career in computer science. An internship journal and a report are also required. Prerequisite: Junior or senior standing in computer science, a minimum GPA of 3.0 in computer science or permission of internship coordinator (Dr. Wei).
CSC 493-494 Independent Study (3-3 credits)
A one- or two-semester, independent research project on a topic selected by the student and a faculty research advisor, and approved by the department. The student may undertake the two-semester option to graduate with departmental honors, in which case he/she must notify the department by spring of his/her junior year. Students need to complete the application form for independent study (available in the Dean's Office) and have the approval of the department chair and Associate Dean in order to register. Prerequisites: CSC 281 Design and Analysis of Algorithms.
CSC 495 Computer Science Project (3 credits)
Students will work on a substantial application based upon their prior knowledge. Prerequisite: CSC 281 Design and Analysis of Algorithms.
CSC 496-497 Honors Research (3-3 credits)
Students need to complete the application form for independent study (available in the Dean's Office) and have the approval of the department chair, Associate Dean and the Honors Program Director in order to register.