Computer Science

Learning goals:

  • The student attains knowledge of major computer science and mathematical concepts that will support the student's goals for further study or a career in computer science or related disciplines.
  • The student develops the sufficient programming skills to support the student's goals.
  • The student develops the ability to write professional documents in a style that is relevant to the student's goals.
  • The student develops the ability to articulate computer science concepts.

Requirements for the Majors in Computer Science. Susquehanna offers two degree programs in computer science. To earn the Bachelor of Arts degree in computer science, students successfully complete, with grades of C- or better, the equivalent of the following 54 semester hours:

Semester Hours View Full Course Catalog >>
4 CSCI-181 Principles of Computer Science
4 CSCI-281 Data Structures
4 CSCI-282 Computer Organization
4 CSCI-381 Algorithms
4 MATH-111 Calculus I
4 MATH-180 Statistical Methods
4 MATH-201 Linear Algebra
4 MATH-221 Discrete Structures

22       22 semester hours of computer science (CSCI) courses at the 300 level or above

Bachelor of Science in Computer Science.To earn the Bachelor of Science degree in computer science, a student must complete the requirements for the Bachelor of Arts in computer science plus MATH-112 Calculus II, either PHYS-101 Introduction to Digital and Analog Electronics or PHYS-204 Introductory Physics I (calculus-based). Students must complete 24 SH in 300-level or above computer science courses rather than the 22 required for B.A. students. All courses must be completed with a grade of C- or higher.

Minor in Computer Science. Students who minor in computer science successfully complete, with grades of C- or better, 24 semester hours, including CSCI-181 Principles of Computer Science, CSCI-281 Data Structures, four hours of computer science courses at the 400 level or above, and 12 additional hours of computer science courses at the the 300-level or above.

CSCI-151 Introduction to Programming

An introductory course in computer science for nonmajors. The course teaches computer programming with emphasis on logical thinking, problem solving and algorithmic development. PROCESSING or a similar programming language is used. Topics include variables, arithmetic and logical operators, graphics, user interface, built-in library calls, I/O operations, conditional statements, loops, functions, and classes. 4 SH. CC: Analytical Thought.

CSCI-181 Principles of Computer Science

An introductory course in computer science for majors. Also open to nonmajors. Emphasizes computer problem-solving methods and algorithmic development. Topics include programming in C++ or comparable language, techniques of good programming style, data types, file and screen input and output, control structures, subroutines, recursion, arrays, and pointers. 4 SH. CC: Analytical Thought.

CSCI-200 Multi-agent Modeling in the Natural and Social Sciences

This course will explore some of what computer science has to offer to the natural and social sciences. Many phenomena consist of interacting individuals that can be modeled as following a set of behavioral rules. Using a suitable computer language such as NetLogo, Repast or others, we will learn to model these phenomena. Some programming experience is helpful but not required. Prerequisites: Fulfillment of the Analytic Thought requirement, sophomore standing and completion of either the Social Interactions requirement or the Scientific Explanations requirement. Some programming experience would be helpful but is not required. 4 SH. CC: Interdisciplinary.

CSCI-235 Artificial Life

Science and mathematics describe natural phenomena so well that lines between real-world events and the corresponding theoretical world events have become blurred. Can computer models simulate key characteristics of life, such as behavior, motivation, reproduction, adaptation, perception and even intelligence? Proponents of strong artificial life believe that computers will eventually serve not only to model life processes but will actually think and be alive. These contentions are compared and contrasted with an emphasis on the current status and future implications of strong artificial life. This course is meant to be accessible to both majors and nonmajors. Same as MATH-235. Prerequisites: Junior standing and, to facilitate an elevated level of class discourse, completion of at least two of the following Central Curriculum requirements: Analytical Thought, Scientific Explanations or Ethics. 4 SH. CC: Ethics Intensive, Interdisciplinary.

CSCI-281 Data Structures

Second course in computer programming. Stresses the interplay between algorithms, data structures and their implementations. Topics include stacks, queues, linked lists, sorting, searching, binary trees and graphs. Prerequisite: CSCI-181 Principles of Computer Science. 4 SH.

CSCI-282 Computer Organization

Fundamentals of computer organization and machine architecture. Presents an overview of computer system organization and examines in detail the digital logic level, the register level and the operating system program interface. Uses the assembly language of an available machine for programming assignments. Prerequisite: CSCI-281 Data Structures or instructor's permission. 4 SH.

CSCI-301 Data Mining

This course provides an introduction to the concepts in the automatic extraction of implicit, previously unknown and potentially useful information from large data that are generated in commerce, science and other areas.  Topics include preprocessing of the data, application of the fundamental algorithms on the prepared data and interpretation of the patterns discovered by the algorithms. The fundamental algorithms for supervised learning, including classification and numerical prediction, and unsupervised earning, which includes association rules and clustering, are introduced. Prerequisites: MATH-180 Statistical Methods and CSCI-181 Principles of Computer Science. 4 SH.

CSCI-351 Numerical Computing

An introduction to the computational techniques for solving mathematical problems. Topics include roots of nonlinear equations, interpolation, numerical differentiation and integration, and numerical solutions of differential equations. Same as MATH-351. Prerequisite: MATH-111 Calculus I; MATH-112 Calculus II is suggested. 2 SH.

CSCI-352 Numerical Analysis

A theoretical study of the standard numerical techniques for solving mathematical problems. Topics include roots of nonlinear equations, polynomial interpolation, solving systems of equations, numerical integration and numerical solutions of differential equations. Same as MATH-352. Prerequisites: CSCI-351 Numerical Computing, MATH-112 Calculus II and MATH-201 Linear Algebra. 2 SH.

CSCI-355 Operations Research

Mathematical models and optimization techniques useful in decision making. Includes linear programming, game theory, integer programming, queuing theory, inventory theory, networks and reliability. Further topics, such as nonlinear programming and Markov chains, as time permits. Same as MATH-355. Prerequisites: MATH-112 Calculus II, MATH-201 Linear Algebra,  MATH-221 Discrete Structures, and either MATH-108 Introduction to Statistics or MATH-180 Statistical Methods, or instructor's permission. 4 SH.

CSCI-370 Cryptology and Number Theory

Cryptology is the study of hiding the meaning of messages. Cryptology is an interesting venue for the study of its mathematical underpinnings (number theory, matrix algebra, probability and statistics) and as an opportunity to implement techniques by means of computer programs. We consider monoalphabetic and polyalphabetic encryptions, public key cryptography, security and anonymity. Same as MATH-370. Prerequisite: MATH-221 Discrete Structures. 4 SH.

CSCI-381 Algorithms

Introduces the design and implementation of algorithms using an object-oriented programming language such as C++ or Java. Covers correctness and efficiency of algorithms for sorting, searching, graph problems and mathematical algorithms. Prerequisites: MATH-221 Discrete Structures and CSCI-281 Data Structures. 4 SH.

CSCI-391 Data Communications and Networks I

An overview of data communications and networks, including channel capacity, Ethernet, Internet protocols, DHCP, DNS, TCP, FTP, SMTP, HTTP, Web servers and file sharing. Prerequisite: CSCI-181 Principles of Computer Science. 2 SH.

CSCI-392 Data Communications and Networks II

Further topics in networks, with an emphasis on security. Includes authentication, encryption, verification, certificates, digital signatures, attacks and defenses, privacy and anonymity. Also covers current developments in networks. Prerequisite: CSCI-391 Data Communications and Networks I. 2 SH.

CSCI-401 Machine Learning

This course provides an introduction to the systematic study of algorithms and systems that improve their knowledge or performance with experience. A statistical approach that emphasizes concepts and the implementation of the methods is presented to make sense of large and complex data.  Topics include linear regression, classification, resampling methods, shrinkage approaches, tree-based methods, support vector machines and clustering. Prerequisites: MATH-180 Statistical Methods, MATH-201 Linear Algebra and CSCI-181 Principles of Computer Science. 4 SH.

CSCI-460 Windows Programming

Programming in an event-driven environment, such as the Microsoft Windows operating system. Creation and management of windows, dialog boxes, mouse and keyboard input, message queues, and multithreading. Prerequisite: CSCI-381 Algorithms. 4 SH.

CSCI-471 Software Engineering: Methodology

The entire software development cycle is explored, from requirements gathering through analysis, design, implementation, testing and documentation procedures. This course discusses both the theory and the business-world reality of software development, with an emphasis on object-oriented methodologies. Prerequisite: CSCI-381 Algorithms or instructor's permission. 4 SH. CC: Writing Intensive.

CSCI-472 Software Engineering: Practicum

This course is designed to provide an experience similar to that of working in the software engineering industry. The methodologies discussed in CSCI-471 Software Engineering: Methodology are put into practice, as students work on project teams throughout one or more software development cycles. Current projects involve designing and developing software to guide a mobile robot. Prerequisites: Junior standing and CSCI-471 Software Engineering: Methodology. 4 SH. Capstone. CC: Team Intensive.

CSCI-481 Programming Languages

Studies the principles underlying various computer languages. Uses comparisons and evaluations of C, FORTRAN, ALGOL, Pascal, LISP, Smalltalk, PERL, PHP and Prolog to introduce the broad principles of language design and implementation. Prerequisite: CSCI-281 Data Structures. 2 SH.

CSCI-482 Theory of Computation

An introduction to the classical and contemporary theory of computation. Topics include the theory of automata and formal languages, computability by Turing machines and recursive functions, computational complexity and possibly quantum computers. Same as MATH-482. Prerequisites: MATH-221 Discrete Structures and CSCI-281 Data Structures. 2 SH.

CSCI-483 Compiler Theory

Studies the phases of compiler design, such as syntax specification, lexical analysis, parsing, symbol tables, error detection, code optimization and code generation. Term project is to write a complete compiler for a small subset of C. Prerequisites: CSCI-282 Computer Organization and MATH-221 Discrete Structures. 4 SH. Capstone.

CSCI-484 Computer Graphics

Basic interactive graphics programming in 2-D and 3-D using a common graphics library such as OpenGL. Introduces fundamental hardware and software concepts to implement graphics. Covers topics of drawing points, curves, surfaces, lighting, shading, animation, geometrical transformation, representation of 3-D shapes, and removal of hidden edges and surfaces as time permits. Prerequisites: CSCI-281 Data Structures and MATH-201 Linear Algebra or instructor's permission. 2 SH.

CSCI-485 Artificial Intelligence

A brief summary of the tools, techniques and applications of artificial intelligence. Introduces problem solving and knowledge representation and selects topics from techniques for constructing models, robot design, language processing, computer vision, neural networks and expert systems. Same as INFS-485. Prerequisites: CSCI-281 Data Structures, MATH-111 Calculus I and either MATH-108 Introduction to Statistics or MATH-180 Statistical Methods. 2 SH.

CSCI-486 Introduction to Operating Systems

Introduction to the principles of operating systems through detailed discussion of a popular operating system such as UNIX, with special attention to the areas of user interface, process management and file systems. Prerequisite: CSCI-281 Data Structures. 2 SH.

CSCI-487 Operating Systems

A study of general operating systems principles, processes, file systems, memory management, interprocess communication, I/O and concurrent processes. Includes a programming project in which the student writes a part of an operating system. Prerequisite: CSCI-486 Introduction to Operating Systems. 2 SH.

CSCI-488 Computer Architecture

A study of computer architecture, including logic circuits, CPU design, instruction sets, CISC, RISC, memory architecture, I/O, peripherals, pipelining, superscalar processors and multiprocessors. Includes hardware and software considerations. Prerequisite: CSCI-282 Computer Organization. 2 SH.

CSCI-500 Senior Colloquium

Experience in individual research and presentation of computer-related topics. Prerequisites: Senior standing and computer science department head's permission. 4 SH. Capstone. CC: Oral Intensive.

CSCI-501 Topics in Computer Science

Subjects vary depending on instructor and student interest. Example topics include software engineering, cryptography, parallel processing, digital video compression, object-oriented technologies, neural networks and others as approved. Prerequisite: Instructor's permission. 2 or 4 SH.

CSCI-502 Independent Study

Individual work for capable students under the supervision of a faculty member. Prerequisite: Instructor consent and approval of computer science department head. Regularly scheduled courses are approved for independent study only under extraordinary circumstances. 2 or 4 SH.

CSCI-503 Independent Research

A research project culminating in a substantive paper on a selected topic or field in computer science or information systems by arrangement with an instructor. Prerequisites: Junior or senior standing and department head's permission. 2 or 4 SH.

CSCI-599 Internship

Full-time employment in computer science or information systems at an industrial firm or a public service organization. Prerequisites: Senior standing, appropriate background courses in computer science and department internship coordinator's permission. S/U grade. 2, 4 or 8 SH.

Interdisciplinary Options. Students majoring in computer science can easily complete a minor in another department. Areas such as accounting, business, biology, chemistry, mathematics, physics or a foreign language are natural choices. Highly motivated students whose interests cross traditional departmental lines may also wish to consider the self-designed major option, developing an integrated program of study from courses in several departments. For further information, see the majors and minors section.

Capstone. The capstone requirement may be satisfied with CSCI-472 Software Engineering: Practicum, CSCI-483 Compiler Theory or CSCI-500 Senior Colloquium. Students need not fulfill the capstone requirement in their major, but they usually do. A capstone course taken as a junior does fulfill the requirement, but not as a sophomore.