Computer Science

Department Chair: Imad Rahal

Faculty: Michael Heroux, Noreen Herzfeld, J. Andrew Holey, John Miller, Imad Rahal, James Schnepf, Yu Zhang, Lynn Ziegler.

Problem solving is at the core of computer science. Beginning with the hands-on laboratory sessions in the first four courses of the major, all the way through your senior research project, you will hone your problem solving skills. Study in the field of computer science provides both computer users and professionals with an understanding of what is computable, how it can be computed and how the power of computation affects human society.  If you choose to study computer science at CSB/SJU, you will design and create models of how a computation could be done and you will often implement your model as a computer program. Along the way you will ask questions such as, "Can this be computed?" and reflecting the ethical traditions that CSB/SJU were founded on, "Should this be computed?"

A degree in computer science from CSB/SJU will prepare you well to begin a career in computing or to go on to graduate school, but it is also a good preparation for employment in business, law, medicine, and many other areas where problem solving is important.

Major

The computer science department offers a major in computer science; it also offers a major in numerical computation jointly with the mathematics department. Information about the numerical computation major is in a separate section for that major. In addition, students may develop individualized majors which meet their particular interests. (See the section on individualizing a traditional major under Academic Regulations.)

Computer Science Major (56 credits)

This major focuses on the study and implementation of algorithms and the theoretical foundations of computing. It is appropriate for students interested in the full range of computing including software design, systems analysis, and graduate study in computer science.

Required Courses:

  • MATH 118 or 119 or 120;
  • CSCI 150 (130 or 140);
  • CSCI 160, 200, 230, 239, 310, 338, 339, and 369:
  • CSCI 373 or 398;
  • Twelve additional upper division credits in computer science, or one course from MATH 315, 322, 338, or 339, and eight additional upper division credits in computer science. 

Students who complete MATH 120 may substitute MATH 239 for CSCI 239.

Minor (24 credits)

Required Courses:

  • MATH 118 or 119 or 120;
  • CSCI 130 or 140 or 150;
  • CSCI 160;
  • Twelve additional computer science credits of which at least 4 are at the 300 level.

Students who complete MATH 120 may substitute MATH 239 for CSCI 239. Students primarily interested in business computing should take 230 and at least one of 312, 330 or 331; those interested in computing systems should take 310 and either 312, 350 or both; those interested in theoretical computer science should take 338 and 339.

Criteria for admission to the major:
Students will be accepted into the Computer Science major if:

  1. They have completed the required mathematics course and three CSCI courses,
  2. No more than one of the above courses has a grade below C, and
  3. The GPA in the above courses is 2.5 or better.

Students will be conditionally accepted into the Computer Science major if:

  1. They have not yet completed all the courses needed for unconditional acceptance into the major, but are currently enrolled in the courses which are lacking, and 
  2. They meet the other two criteria for acceptance on the courses completed thus far.

Students not accepted to the major must consult with Academic Advising. In exceptional circumstances, a student may be allowed to continue working toward a Computer Science major, subject to constraints determined by the Chair of the department in consultation with Academic Advising.

Courses (CSCI)

130 Concepts of Computing: Business and Society. (4)
Introduces fundamental concepts of computer science that underlie all computing application, motivated by computational problems in business.  Students will study the basic architecture of computers, the structure of programming, and the design of spreadsheets and databases.  Through regularly scheduled labs they will gain hands-on experience with applications to business problems.  Intended for students with an interest in computing in business.  Prerequisites:  Math 115 or four years of college preparatory mathematics or permission from the chair of the department.

140 Concepts of Computing: Science and Mathematics. (4).
Introduces fundamental concepts of computer science that underlie all computing applications, motivated by computational problems in science and mathematics. Topics include programming, modeling and simulation applied to a wide range of scientific problems along with an introduction to fundamental structures of computing.  Intended for students with an interest in computing in science.  Prerequisites: MATH 115 or four years of college preparatory mathematics or permission from the chair of the department.

150 Introduction to the Science of Computing. (4)
Introduces fundamental concepts of computer science that underlie all computing applications, motivated by computational problems in media, communication and the arts. Topics include programming, modeling and simulation applied to a wide range of visual, aural and textual problems along with an introduction to fundamental structures of computing.

160 Problem Solving, Programming, and Computers. (4)
Introduces fundamental concepts of computer science that underlie all computing applications, motivated by computational problems in media, communication and the arts. Topics include programming, modeling and simulation applied to a wide range of visual, aural and textual problems along with an introduction to fundamental structures of computing.  Prerequisite: 130 or 140 or 150.

200 Abstraction, Data Structures, and Large Software Systems. (4)
A study of the data structures used in problem-solving and programming from an object-oriented perspective. Topics include the implementation and application of linear, hierarchical, network and associative data structures along with the use of standard program libraries to supply those structures. Prerequisite: 160, completion of calculus requirements.

217 Topics in Computer Science. (0-4)
Selected computer science topics such as enrichment courses in particular programming languages. Prerequisite: Consent of instructor.

230 Software Development. (4)
Provides an intensive, implementation-oriented introduction to the software-development techniques used to create medium-scale interactive applications, focusing on standard techniques and skills for software design such as the Unified Modeling Language (UML) and design pattern, and for software coding such as class design by contract (DBC), package design, code documentation, debugging, testing, version controlling, and refactoring. Prerequisites: 160 or 161.

239 Discrete Computational Structures. (4)
Offers an intensive introduction to discrete mathematical structures as they are used in computer science. Topics include functions, relations, sets, propositional and predicate logic, simple circuit logic, proof techniques, elementary combinatorics, discrete probability and functional programming. Prerequisites: 130 or 140 0r 150 and MATH 118 or 119 or 120.

271 Individual Learning Project. (1-4)
Supervised reading or research at the lower-division level. Permission of department chair required. Consult department for applicability towards major requirements. Not available to first-year students.

310 Computer Organization. (4)
Introduction to computer systems and architecture. Topics include digital systems, machine level data representation, processor design, assembly level machine organization, memory systems, system control, organization of operating systems, concurrency and scheduling. Prerequisite: 160 or 161, and either 239 or MATH 239.

312 Data Communications and Networks. (4)
Introduction to the concepts, terminology and approaches used in data communication systems. Topics include protocol stacks as models and implementations, signal encoding, media for transmission, analysis of network architectures, addressing and routing, error and flow control, connection management and security. Prerequisite: 200 or 230.

317 Topics in Computer Science. (1-4)
Selected computer science topics such as distributed processing systems, graphics or artificial intelligence. Prerequisite: consent of instructor. May be repeated for credit.

318 Topics in Software Development. (1-4)
Selected computer science topics requiring a major software development project. Prerequisite: consent of instructor. May be repeated for credit.

321 Computer Graphics. (4)
This course will survey programming techniques for producing three-dimensional computer graphics. Topics will include event-driven programming, geometric objects and transformations, viewing, shading, and animation. Prerequisites: 200 or  230 and either 239 or MATH 239.

330 Software Engineering. (4)
Examines the methods and tools used to determine information requirements of a business, construct logical models of business processes, prepare specifications for program development, prepare procedures and documentation, and test, install and maintain an information system. Prerequisite: 230.

331 Database Systems. (4)
Introduction to physical file organization and data organization techniques, including an examination of data models, file security, data integrity and query languages. Discussion will focus on examples which illustrate various data models. Prerequisite: 230.

332 Data Driven Intelligence. (4)
Introduction to the interdisciplinary fields of data mining and machine learning with emphasis on the following topics: association rule mining, classification, clustering and outlier analysis. Students will study, analyze and implement different algorithms designed to efficiently extract useful hidden nuggets of knowledge that could aid in decision-making processes and which would have remained unknown otherwise. Prerequisites: CSCI-200 and CSCI-230.

338 Algorithm Design and Analysis. (4)
Introduction to formal methods for the design and analysis of complex algorithms, with an emphasis on developing students' problem-solving abilities. Focuses on computational resources and ways of conserving both time and memory. Prerequisites: 162  or  200 and either 239 or MATH 239.

339 Theoretical Foundations of Computer Science. (4)
Introduction to the theoretical structures of programming languages and computers. Topics include regular expressions, formal grammars, abstract automata and computability. Prerequisites: 160 or 161 and either 239 or MATH 239.

340 Organization of Programming Languages. (4)
The structure, design and application of various programming language paradigms, with emphasis on the principles and semantics of languages. Prerequisite: 200.

341 Compiler Theory. (4)
Introduction to the design and construction techniques of modern language compilers, including both parsing an code generation. Prerequisite: 200.

350 Operating Systems. (4)
The fundamentals of the software that drives the computer, including single-user, multi-user and multi-tasking systems. Topics include networks, file systems, task scheduling, multiprocessing, memory management, user interfaces and peripheral devices. Prerequisite: 162 or 200, 310 recommended.

369 Ethical Issues in Computing. (4)
Examines a variety of philosophical and ethical questions that arise within the development and use of computer technology. Students will become familiar with several models of ethical reasoning and will apply these approaches to questions in a variety of areas of computer science, including artificial intelligence, nanotechnology, data mining, software development, and cyberspace. Prerequisite: 200 or 230 and JR/SR standing.

371 Individual Learning Project. (1-4)
Supervised reading or research at the upper-division level. Permission of department chair and completion and/or concurrent registration of 12 credits within the department required. Consult department for applicability towards major requirements. Not available to first-year students.

372 Individual Senior Research. (0-4)
Individualized experimental, theoretical or applied projects for seniors. Each student intensively explores a topic, writes a major research paper, and makes a formal presentation to the department. Prerequisite: Consent of department chair. May be repeated for up to 4 credits.

373 Senior Research in Computer Science. (4)
Directed research in computer science organized around a selected topic and conducted in a seminar format. Includes consideration of computer science research methodology and analysis of current research in the seminar topic. Each student intensively explores a topic, writes a major research paper and makes a formal presentation to the department.
 Prerequisite: 200 or 230 and JN/SR standing.

398 Honors Senior Essay, Research or Creative Project. (4)
Required for graduation with "Distinction in Computer Science." Prerequisite: HONR 396 and approval of the department chair and director of the Honors Thesis program. For further information see HONR 398.