The computer science curriculum consists of classroom and laboratory experiences related to the following topics: algorithms and data structures, theory and design of computer programming languages and systems, operating systems, compilers, interaction design, computer graphics, distributed systems, database systems, artificial intelligence, networks, software engineering, and organization and design of microprocessor-based computer systems. The curriculum embraces the values, best practices, and philosophy of the open source culture.
Program Educational Objectives
The Computer Science program educational objectives are:
- preparation for professional practice
- preparation for advanced study
- promotion of the ideas of life-long learning
- development of self-fulfillment through professional activity
- development of ethical values and personal responsibility.
The program educational objectives are met by providing a curriculum which follows contemporary guidelines for computer science. Mathematics and digital hardware courses are important components of the curriculum. In addition to these traditional technical courses, and in keeping with the Jesuit tradition of educating the whole person, the curriculum includes core requirements in the humanities, communications, social sciences, and the fine arts.
Opportunities for involvement in professional societies, student design competitions, public open source projects, research with faculty, and University co-curricular activities are plentiful and help to accomplish these objectives.
Graduates of the Computer Science undergraduate program will be able to:
- present ideas at multiple levels of abstraction and from multiple perspectives
- communicate, both orally and in narrative form, the functional purpose and technical details of software systems
- design, implement, test, and evaluate software components and systems meeting given requirements
- work effectively as a team member
- develop software in an ethical manner, in which the rights of software authors and users are respected, attribution is given when deriving work, and no persons or groups are locked out of participation unless required by applicable civil laws
- choose the right language or tool for a given task
- demonstrate proficiency in at least three popular programming languages
- recognize, and write small components in, approximately ten programming languages
- demonstrate knowledge of both algorithmic complexity and software performance
- apply usability and accessibility guidelines in software design and construction
Students interested in transferring into the Computer Science undergraduate program must complete MATH 131 , CMSI 185 , and CMSI 186 with a minimum grade of B (3.0) in each course before being considered. Final approval of the transfer request resides with the department chair.
Department criteria for graduation include (1) completion of at least 124 semester hours covering all requirements below, with (2) a minimum of 45 semester hours of upper division courses, and (3) a minimum grade point average of C (2.0) in the upper division courses.
The following courses are to be completed:
- Computer Science (47 semester hours): CMSI 185 , CMSI 186 , CMSI 281 , CMSI 282 , CMSI 284 , CMSI 370 , CMSI 371 , CMSI 385 , CMSI 386 , CMSI 387 , CMSI 401 , CMSI 402 , CMSI 486 , CMSI 488 , and one upper division elective course from CMSI
- Electrical Engineering (6 semester hours): ELEC 281 , ELEC 385
- Math and Science (20 semester hours): MATH 131 , MATH 132 , MATH 248 , MATH 360 , MATH 366 , and one elective course from the Seaver College of Science and Engineering
- University Core: A minimum of 32 semester hours that must include the following:
|Faith and Reason
|Ethics and Justice
|CMSI 370 Interaction Design (also a Computer Science requirement; satisfies the core requirement Understanding Human Behavior)
|CMSI 371 Computer Graphics (also a Computer Science requirement; satisfies the core requirement Creative Experience)
|Additional Explorations or Integrations courses if necessary to achieve the 32 semester hour minimum. This is typically not necessary unless the student has tranferred courses from other institutions with less than 4 semester hours of transfer credit.
|* Course may be 3 or 4 semester hours
- Free Electives: Courses necessary to bring the total semester hour count to 124. Students should prepare a coherent program of electives and related core courses with a faculty advisor. The following tracks are recommended:
- Business and Information Management: Satisfaction of social science requirements of the core with economics (ECON) courses, the CMSI elective requirement with Electronic Markets, and four upper division AIMS courses selected in consultation with the faculty advisor.
- Scientific Computing: Three suitable science courses and two suitable math courses, with the CMSI elective fulfilled with an interdisciplinary course such as CMSI 367 Biological Databases , or computationally intensive courses such as in security, cryptography, or data science.
- Games and Animation: CMSI 375 Game Design or an independent studies in game design or game programming (focusing on the internals of game engines such as Unreal or Unity), three suitable animation (ANIM) courses (plus prerequisites), and one physics course, preferably PHYS 101 Introduction to Mechanics . One or more of the lower division ANIM courses may be used to satisfy core curriculum requirements; the PHYS course can satisfy the science requirement.
- Mathematics: Five or more courses selected from Calculus III, Differential Equations, Abstract Algebra, Methods of Applied Math, Real Variables, Complex Variables, Topology, or any upper division mathematics course.
- Cognitive Science: CMSI 485 Artificial Intelligence , PSYC 2003 Brain and Behavior (with appropriate PSYC prerequisites), PSYC 4001 Cognition (with appropriate prerequisites). A course in machine learning and one or more courses in linguistics are recommended.
The typical course of study leading to the B.S. degree in computer science is as follows: