Computer Science

Computer Science Course Descriptions

CPSC 100 Introduction to Computer Science
Credit Hours:
3

Presents an overview of fundamental computer science topics and an introduction to computer programming. Overview topics include an introduction to computer science and its history, computer hardware, operating systems, digitization of data, computer networks, Internet and the Web, security, privacy, AI, and databases. This course also covers variables, operators, while loops, for loops, if statements, top down design (functional decomposition), use of an IDE, debugging, and arrays.

CPSC 111 Computer Science I
Credit Hours:
3

Provides more in-depth programming, including software engineering topics such as unit testing and the use of version control. Basic data structures covered include arrays, lists, sets, maps. Basic algorithm efficiency concepts are covered along with simple searching and sorting. Other techniques such as graphical user interface programming, exceptions, recursion, designing classes (no inheritance), file input/output are covered. Design techniques such as encapsulation and UML diagramming are covered. Prerequisite: CPSC 100.

CPSC 120 Computer Applications
Credit Hours:
1

Consists of a series of projects to explore the use of specific application software packages. Prerequisite: CPSC 100 or equivalent

CPSC 211 Computer Science II
Credit Hours:
3

Provides yet more in-depth programming, including software engineering topics, such as Model-View-Controller design and more formalized unit testing. Additional data structures covered include stacks, queues, priority queues, trees, graphs, and hash tables. Object-oriented programming is introduced, along with associated UML diagramming techniques. Java Generics are covered. Prerequisite: CPSC 111.

CPSC 220 Applied Computer Programming
Credit Hours:
3

Studies with each offering a particular computer programming language (e.g., C++, Python, PHP, COBOL, Java, and Perl) and the applications in which that language is traditionally used. Prerequisite: CPSC 111 or permission of instructor

CPSC 230 Systems Programming
Credit Hours:
3

Provides an understanding of the interface between computer hardware and software. The course covers computer hardware, activation records and address spaces, a practical assembly language (like ARM), writing C programs, how C code is compiled into assembly level programs, and how these programs are compiled, linked, and loaded into memory. This course also provides an understanding of Linux/Unix administration fundamentals, including user creation, permissions, installations from source, and simple server configuration. Prerequisite: CPSC 111

CPSC 320 Algorithm Analysis
Credit Hours:
3

Examines formal concepts of algorithm efficiency including Big O, Theta, and NP theory. Algorithmic techniques studied include brute force, simulation, divide and conquer, dynamic programming, greedy algorithms, backtracking, branch and bound, and parallel algorithms. Time and space efficiency is analyzed from a practical and theoretical viewpoint throughout this course. Advanced searching and sorting techniques are covered. Classic algorithms and their relevance to real problems are examined. Typical data structures used as examples include hash tables, trees, and graphs. Parallel programming is explored. Prerequisites: CPSC 211, MATH 250

CPSC 335 Computer Security
Credit Hours:
3

Covers operating system and network level security topics. Typical application level attacks such as buffer overruns are analyzed and solutions covered. This course includes basic coverage of TCP/IP and cryptography in the context of network security. Typical network attacks such as denial-of-service, spoofing, etc. are covered, as are systems administration level analysis of possible attacks and intrusions via Linux logs. Prerequisite: CPSC 230

CPSC 340 Programming Languages
Credit Hours:
3

Develops the concepts of language structure and uses these as a basis for comparing several languages. Formal language definitions are introduced, and the concepts of syntax, semantics, and pragmatics are discussed. The emphasis is on languages with inherently different programming paradigms than students have been exposed to in other courses. Prerequisite: CPSC 211.

CPSC 345 Mobile Application Development
Credit Hours:
3

Practices the development of mobile applications. Design considerations specific to mobile applications are covered, including limited resources, battery life, intermittent connectivity, etc. Also covered are the networking concepts needed to connect a mobile applications to a web-based server, and to use third party APIs such as Google Maps, location-based programming, etc. Projects are done in the context of one or more popular mobile platforms, such as Android and iOS. Prerequisites: CPSC 230, 365.

CPSC 350 Computer Architecture
Credit Hours:
3

Studies the theoretical and practical design principles of computer organization. The performance effects of pipelining, superscalar design, VLIW, and parallel processing are examined. Prerequisite: CPSC 211.

CPSC 365 Web Applications and Database Management Systems
Credit Hours:
3

Studies and practices the development of dynamic data-driven web applications, in the context of the languages and technologies used in typical shared hosting environments. Topics include database design, including entity-relationship modeling and normalization, designing and implementing data models for a web application, developing the server side code necessary to interact with that data model, developing the web pages for the application, and an introduction to the use of dynamic scripting on the client side. Web application security is covered throughout. Prerequisite: CPSC 111

CPSC 400 Programming Projects
Credit Hours:
1

Enables students to design, implement, and test a program of their own choosing. Proposed projects are approved by a faculty member who then meets with the student on a weekly basis. A final report is prepared and presented at the completion of the project. The course can be repeated once for credit. Prerequisite: Permission of the instructor.

CPSC 430 3D Game Programming
Credit Hours:
3

Examines the basic issues in 3D rendering and collision detection and associated algorithms, suitable for programming a 3D game engine. Students explore data structures used for 3D games. Basic artificial intelligence techniques used in games are also covered in the context of a 3D game engine. Prerequisites: CPSC 320, MATH 230.

CPSC 450 Operating Systems
Credit Hours:
3

Examines the major operating system concepts in the context of modern operating systems such as UNIX, Linux, and Windows. Topics include process management, synchronization, memory management, file systems, protection and security. Topics are examined from both the operating system and programmer perspectives. In addition, the course discusses more advanced system administration topics. Prerequisites: CPSC 230, 320.

CPSC 455 Software Engineering
Credit Hours:
3

Formalizes the software engineering topics covered in previous courses, in the context of what would be required in a real-world corporate environment. Typical software development methodologies are discussed (e.g. waterfall, agile, test-driven design, etc.). UML Diagramming are covered. Students work in teams, analyze requirements, participate in code reviews, etc. Human Computer Interaction fundamentals are covered, along with ethical and social issues related to the business of computing. The different roles involved with large scale development are discussed. Prerequisite: CPSC 211.

CPSC 480 Computer Networks
Credit Hours:
3

Examines the fundamental aspects of computer networks. Topics include layered network architecture, application level protocols, transport protocols, routing and flow control mechanisms, data link protocols, wireless networks, protocol design, and client-server programming. In addition, this course introduces techniques for designing and building a complex computer network. Prerequisites: CPSC 230, 320.

CPSC 490 Advanced Topics in Computer Science
Credit Hours:
3

Is a study of a specialized topic in the computing field, such as Animation, Pattern Recognition, Networking, Theory of Computation, Alife, or advanced study of a particular language (such as Java, C++, Perl, or VRML). Prerequisite: Permission of the instructor.

CPSC 495 Computer Science Seminar
Credit Hours:
1

Provides a weekly discussion of new advances in the field of computer science and their effects on society. Presentations are given by invited speakers, faculty, and students. The course can be repeated once for credit. Prerequisite: Permission of the instructor.

Back to top