Undergraduate Course Catalog


Freshman Seminar Courses
General Offerings
Required Math Courses
Required Core Courses
Graphics and Visualization Electives
Web and Database Electives
Theoretical and Artificial Intelligence Electives
Special Topics Elective
Internship and Research Courses


Freshman Seminar Courses

CSC 150: Computer Models (3 credits)

The freshman seminar program is designed to enhance both the academic and advising experience of our students' freshman year. Classes will be capped at 20 and are composed exclusively of CAS freshmen. In most cases, the instructor serves as the students' advisor. Generally, freshman seminars fall into one of two categories: a required course in the student's major or a course in the GER. Most freshman seminar courses are offered in the fall, although there is an opportunity to offer spring freshman seminar courses as well.

CSC 150: Computational Thinking Through 3D Animation (3 credits)

This course introduces students to algorithmic and computational thinking through formulating problems and finding their solutions using 3D animation software. Students will design and create 3D worlds, movies, games, and other multimedia. Through individual and group projects, students will learn to express problems and solutions in algorithmic and computational terms and match the computational tool to the solution.



General Offerings

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.

Prerequisite: The course presupposes no previous programming experience.



Required Math Courses

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: CSC 121 Computer Science II, or permission of instructor

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 240 Discrete Structures I



Required Core Courses

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 201: Data Structures (4 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

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

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 asymptotics, 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 or permission of instructor

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, object-oriented and procedural languages, will be presented.

Prerequisite: CSC 201 Data Structures or permission of instructor

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 or permission of instructor

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 281 Design and Analysis of Algorithms or permission of instructor

CSC 495: Computer Science Project (3 credits)

Students will work on a substantial application based upon their prior knowledge.

Prerequisite: CSC 315 Software Engineering or permission of instructor



Graphics and Visualization Electives

CSC 341: Introduction to 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 281 Design and Analysis of Algorithms or permission of instructor

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 281 Design and Analysis of Algorithms or permission of instructor

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 281 Design and Analysis of Algorithms or permission of instructor

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 281 Design and Analysis of Algorithms or permission of instructor



Web and Database Electives

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.

Prerequisites: CSC 281 Design and Analysis of Algorithms or permission of instructor

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.

Prerequisites: CSC 281 Design and Analysis of Algorithms or permission of instructor

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.

Prerequisites: CSC 281 Design and Analysis of Algorithms or permission of instructor

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.

Prerequisites: CSC 281 Design and Analysis of Algorithms or permission of instructor

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.

Prerequisites: CSC 281 Design and Analysis of Algorithms or permission of instructor

CSC 356: Mobile App design (3 credits)

This course is designed for students who wish to start developing mobile applications on Android platforms, and through the process understand the concepts relating to Computer Science on a mobile platform. The course will include the basics of mobile and wireless technology with Android programming and will cover the most recent version of Android. Students will learn how to develop feature-rich Android applications using various development platforms and learn the basic concepts in Computer Science such as algorithmic thinking, abstractions, logic, flow control, and data representation, storage and manipulation. The primary language used in the course will be Java.

Prerequisites: CSC 281 Design and Analysis of Algorithms or permission of instructor



Theoretical and Artificial Intelligence Electives

CSC 363: Theoretical Foundations

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 281 Design and Analysis of Algorithms or permission of instructor

CSC 361: Formal Languages and Compiler Construction

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 281 Design and Analysis of Algorithms or permission of instructor

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 281 Design and Analysis of Algorithms or permission of instructor



Special Topics Elective

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 281 Design and Analysis of Algorithms or permission of instructor



Internship and Research Courses

CSC 490: Internship

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, CSC 315 Software Engineering.



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.

Prerequisite: CSC 315 Software Engineering or permission of instructor

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.

Prerequisite: CSC 315 Software Engineering or permission of instructor

Saint Joseph's University, 5600 City Avenue, Philadelphia, PA 19131