- Computer Science
CPSC 1105. Technological Solutions (3-0-3) A problems solving course using the newest technologies to develop an understanding of and skills in spreadsheet and data analysis, Web applications, word processing (intermediate level) and presentation software (advanced level). One component of this course is learning how to locate, evaluate and use information including Internet sources. Emphasis will be placed on using technology to solve practical problems.
CPSC 1301. Computer Science 1 (3-0-3) Co-requisite: CPSC 1301L. This course includes an overview of computers and programming; problem solving and algorithm development; simple data types; arithmetic and logic operators; selection structures; repetition structures; text files; arrays (one-and-two-dimensional); procedural abstraction and software design; modular programming (including sub-programs or the equivalent).
CPSC 1301L. Computer Science 1 Lab (0-3-1) Co-requisite: CPSC 1301. This course provides a hands-on experience for the students in the area of programming as a realization of the concepts presented in Computer Science 1. The students will complete programming projects using one or more program development environments. The lab projects will apply and reinforce the topics covered in Computer Science 1.
CPSC 1302. Computer Science 2 (3-0-3) Prerequisite: CPSC 1301 and CPSC 1301L with a grade of C or better. A continuation of CPSC 1301. This course emphasizes programming using object-oriented methods. The fundamentals used in designing, developing and using classes, encapsulation, inheritance mechanisms, polymorphism and dynamic binding.
CPSC 2105. Introduction to Computer Organization (3-0-3) Prerequisite:
Prerequisite: CPSC 1301 and CPSC 1301L with a grade of C or better. Overview of basic
computer organization. Representation of data in computers. Introduction
of Boolean Algebra and logic gates used to implement Boolean functions.
Introduction to flip-flops and sequential logic. Methods to reduce the
complexity of Boolean functions-algebraic and K-Maps. Overview of computer
arithmetic. Instruction set architecture of a sample computer. Interaction
of the machine and computer languages including discussion of the
compilation, assembly, and loading process.
CPSC 2108. Data Structures (3-0-3) Prerequisite: CPSC 1302 with a grade of C or better. This course extends the concepts of primitive data types by teaching the student a set of data structures that pervades both the theoretical and practical domains of computer science.
CPSC 2125. Introduction to Internet Programming (3-0-3)
Prerequisite: CPSC 1301 and CPSC 1301L with a grade of C or better. This course is an introduction to Internet
programming and Web application development. Subjects covered include
basic Web page development and an introduction to dynamic Web page
development using client-side scripting, server-side scripting, and
CPSC 2555. Selected Topics in Computer Science (1-3) Prerequisite; CPSC 2108 with a grade of C or better. Study of topics of special interest, independent study, or
directed experience in the field of computing.
Course may be taken three times. A maximum
of three credit hours may be applied to the degree program.
CPSC 3111. Structured Programming with COBOL 1 (3-0-3) Introduction to programming in COBOL. Emphasis on structured design techniques. Computer assignments required.
CPSC 3112. Structured Programming with COBOL 2 (3-0-3) Prerequisite: CPSC 3111 with a grade of C or better. A continuation of CPSC 3111.
CPSC 3115. Discrete Structures in Computer Science (3-0-3) Prerequisite: MATH 1131. An introduction to the mathematical foundations of computer science. Topics include set theory, functions, relations, Boolean algebra, counting, graph theory and algorithm analysis.
CPSC 3116. Mainframe Basics and JCL (3-0-3) This course presents an overview of IBM mainframe operating systems currently in use in the area. It includes common terminology and the most used JCL features.
CPSC 3118. Introduction to Graphical User Interfaces (3-0-3) Prerequisite: CPSC 2108 with a grade of C or better.
The primary purpose of this course is to provide experience and skills in designing
and programming event-driven Windows applications using visual development environment
and tools. The course highlights the use of modern languages such as Visual Basic .NET,
C#, and Java to create graphical user interfaces. Extensive lab work and programming required.
CPSC 3121. Assembly Language Programming 1 (3-0-3) Prerequisite:
CPSC 2105 with a grade of C or better. An introduction to assembly
language for mainframes or PC's. Topics include machine architecture
(registers, memory, instruction formats), character data processing,
decimal arithmetic, binary arithmetic, subroutine and program linkage.
CPSC 3122. Assembly Language Programming 2 (3-0-3) Prerequisite: CPSC 3121 with a grade of C or better. Topics include Macro writing, Dsects, Multi-dsect programs, Standard Linkage Conventions, VSAM processing, Assembler and Linkage Editor design.
CPSC 3125. Introduction to Operating Systems (3-0-3) Prerequisites: CPSC 2108 with a grade of C or better. An introduction to basic operating system level software concepts. Course topics include processes, threads, symmetric multi-processing, thread synchronization and memory management techniques.
CPSC 3131. Introduction to Database Systems 1 (3-0-3) Prerequisite: CPSC 2108 with a grade of C or better. The course covers the fundamentals of database systems. Topics to be covered include the following: file systems and database concepts, database models, relational database model, introduction to SQL, database design and implementation, database integrity, and normalization of database tables. Implementation techniques using commercial DBMS will be considered. The course includes lab work and individual database application programming projects.
CPSC 3132. Introduction to Database Systems 2 (3-0-3) Prerequisite: CPSC 3131 with a grade of C or better. A continuation of Database Systems 1. Database architecture and administration. New developments in databases. A different database will be introduced. Lab work and database application projects.
CPSC 3156. Introduction to Transaction Processing (3-0-3)
Prerequisite: CPSC 3111 with a grade of C or better. An introduction to interactive processing in
a transaction-based computer system. Topics include multitasking, multi
threading, maps, pseudo conversational programming and large system
design. A language for writing transaction-based systems will be
CPSC 3165. Professionalism in Computing (3-0-3) Prerequisite: CPSC 1302 with a grade of C or better. The social impact, implications and effects of computers on society, and the responsibilities of computer professionals in directing the emerging technology. Includes the examinations of reliable, risk-free technologies, and systems which provide user friendly processes. Specific topics include an overview of the history of computing, computer applications and their impact, the computing profession, and the legal and ethical responsibilities of professionals.
CPSC 3175. Object-Oriented Design
(3-0-3) Prerequisite: CPSC 2108 with a grade of C or better. An introduction to designing windows applications using object-oriented and component technologies. The emphasis of this course is in event-driven programming using controls and components to develop desktop windows applications. The stress of the course is on the full usage of the Object-Oriented Paradigm for problem-solving and software development using an object-oriented programming language and the Standard Object Modeling Language (UML).
CPSC 3555. Selected Topics in Computer Science (1-3 hours) Prerequisite: CPSC 2108 with a grade of C or better. Study of topics of special interest, independent study, or directed experience in the field of computing. Course may be taken three times. A maximum of three credit hours may be applied to the degree program.
CPSC 4111. Game Programming I (1-3 hours) Prerequisite: CPSC 3118
and CPSC 3175. This course introduces the student to Game Programming using 2D principles. The student will be exposed to many aspects of the process of game programming. The course will concentrate on aspects of 2D game programming taking a tour of all aspects of the creation of games including game production; language and architecture; mathematics, collision detection and physics; graphics, textures, artificial intelligence, audio and networking. The student will create a 2D game with a game engine.
CPSC 4112. Game Programming II (1-3 hours) Prerequisite: CPSC 4111
with a grade of C or better. This course continues the introduction to Game Programming using 3D principles. The student will continue to delve deeper in the concepts introduced in the first Game Programming course. The student will be exposed to more advanced topics in game programming such as Multiplayer games and Massively Multiplayer Online Games (MMOGs). The student will create a 3D game with a game engine .
CPSC 4125. Introduction to Server-Side Web Development (3-0-3) Prerequisites: CPSC 2125 and CPSC 3131 with grades of C or better. This course is a continuation of CPSC 2125, Introduction to Web Development. Topics include: server-side scripting languages, interfacing web applications with databases, advanced topics in hypertext markup languages and client-side scripting. Modern software tools for the server-side web application development will be introduced. Students will complete individual subjects-development of a web site with a database connectivity.
CPSC 4175. Introduction to Software Engineering (3-0-3) Prerequisite:
CPSC 2108 with a grade of C or better and Senior standing. In this course, students are introduced to
the basic principles of software engineering. The course focuses on the
issues, methods and tools applied at every phase of the iterative
development life cycle spanning from the conception of the actual
requirements, through the analysis, design, development, testing,
deployment and maintenance of the software product. Other subjects include
project management and quality assurance. Students must complete a
significant software project.
CPSC 4176. Senior Software Engineering Project (3-0-3)
Prerequisite: CPSC 4175 with a C or better. The course encompasses a
practical application of knowledge and skills mastered in the Computer
Science curriculum through the development of a significant project.
Students will apply a software engineering methodology in a team
environment to develop a complex real-world application with an external
customer under the guidance of instructor. Team members are involved in
all phases of the software development life cycle.
CPSC 4205. Senior Project & Portfolio (1-3 hours) Prerequisite: Senior stnding. A capstone course for BSIT majors that includes completion of a digital portfolio, an electronic resume representing skills acquired and projects completed. The skills to create the portfolio will be introduced in an earlier course and students will be expected to add selected assignments to the portfolio during their last few semesters. Faculty will include Portfolio comments and students will be expected to record reflections on accomplishments. Finally, in cooperation with the IT industry, students will be expected to secure an internship or equivalent work arranged with a faculty member, and document internship hours, objectives and supervisor evaluations in the Portfolio, and to present a summary of their experiences in the course to interested faculty and fellow students at the completion of the course.
CPSC 4698. Internship (1-3 hours) Prerequisite: Junior Standing. Work experience on an approved project supervised by a faculty member. May be repeated for a maximum of three credit hours. (S/U grading.)
CPSC 4899. Independent Study (3-0-3) Prerequisite: Junior Standing. Course project approved and supervised by a faculty member. May be taken only once for credit.
CPSC 5115. Algorithm Analysis and Design (3-0-3) Prerequisites:
CPSC 2108, and MATH 2125 or CPSC 3115 with grades of C or better. This course emphasizes the understanding of data structures and algorithms from an analytical perspective rather than from an implementation standpoint. The concepts developed allow discussion of the efficiency of an algorithm and the comparison of two or more algorithms with respect to space and run-time requirements. Analytical methods are used to describe theoretical bounds as well as practical ones. In general, this course addresses the constraints that affect problem solvability.
CPSC 5125. Introduction to Computer Graphics (3-0-3) Prerequisites: CPSC 2108 with a grade of C or better. Introduction to the input, construction, storage, retrieval, manipulation, alternations, and analysis of computer graphics objects. Graphics computer hardware, graphics primitives, two-dimensional and three-dimensional viewing and transformations, basic modeling.
CPSC 5127. Introduction to Computer and Network Security (3-0-3)
Prerequisite: CPSC 2108 with a grade of C or better. This course is a basic introduction to the
issues of software security with a focus on raising the students'
awareness of the difficulties of maintaining a secure software
environment. It reviews traditional security techniques and discusses the
vulnerabilities of such methods. The course emphasizes well-written
software as a prerequisite to network security and highlights security
implications of common programming mistakes.
CPSC 5135. Programming Languages (3-0-3) Prerequisite: CPSC 2108 with a grade of C or bettter. Emphasizes the run-time behavior of programs. Languages are studied from two points of view: (1) the fundamental elements of languages and their inclusion in commercially available systems; and, (2) the difference between implementations of common elements in languages.
CPSC 5136. Compiler Construction (3-0-3) Prerequisite: CPSC 2108 with a grade of C or better. Includes the theory, the design, and the implementation of a large language translator system. Lexical analysis, syntactic analysis, core generation, and optimization are emphasized.
CPSC 5138. Advanced Database Systems (3-0-3) Prerequisite: CPSC 3131 with a grade of C or better. This course is intended for computer science students and professionals who have already acquired a basic background on databases. The objective of the course is to introduce the students to the most advanced concepts and recent issues in several areas of database technology, including the following: advanced database design and implementation, transaction management and concurrency control, distributed database management systems, object-oriented databases, client/server systems. The course includes lab work and individual database application projects.
CPSC 5155. Introduction to Computer Architecture (3-0-3) Prerequisite:
CPSC 2105 and CPSC 3121 with grades of C or better. Review of combinational and sequential logic.
Description of computer memory. Study of the instruction set architecture
and addressing modes of a simple computer. Design on the computer control
unit including both hard-wired and microprogrammed CPU's. Design of
Input/Output including program-controlled I/O, interrupted-driven I/O,
direct memory access (DMA), and I/O channels.
CPSC 5156. Parallel and Distributed Computing (3-0-3) Prerequisite: CPSC 3125 with a grade of C or better. Survey of parallel computer architectures, including interconnection networks and synchronization techniques. Algorithms and programming languages for parallel computers. Applications. Interprocess communications, communication protocols, communication network architectures, and distributed programming interfaces. Performance implications.
CPSC 5157. Computer Networks (3-0-3) Prerequisite: CPSC 2108 with a grade of C or bettter. Local area networks, wide area networks, and internets. Protocols and the ISO Open Systems Interconnect reference model. Design, analysis, and performance evaluation. Emphasis on data link, network, and transport protocols.
CPSC 5165. Web Development Projects (3-0-3) Prerequisites: CPSC 4125 with a grade of C or better. This course is a continuation of CPSC 4125, Introduction to Server-Side Web Development. This is a project-based class. Teams consisting of 3-4 students will develop working prototypes of large-scale web applications. Teams and their individual members will be required to make presentations reflecting progress through each stage of the project development: task formulation, analysis, prototyping and design, coding, debugging and testing. The final report will include a demonstration of the fully functional project.
CPSC 5185. Introduction to Artificial Intelligence (3-0-3) Prerequisite: CPSC 2108 with a grade of C or better. Heuristic Techniques in Artificial Intelligence. Foundations of heuristic methods, problem representation and search methods, knowledge representation, learning and inference, natural language processing. Appropriate programming language and software tools for Artificial Intelligence.
CPSC 5555. Selected Topics in Computer Science (3-0-3) Prerequisite: Senior standing. Study of topics of special interest in computer science, or directed experience in computer science by means of lecture, discussion, seminar, and research. May be taken for a maximum of nine hours.
CPSC 6105. Fundamental Principles of Computer Science. (3-0-3)
Overview of basic concepts in computer science ranging from computer
hardware components, interconnection network structures and communication
protocols, analysis of computer algorithms to software systems and applications.
May not be applied to a degree program. Need a B or better to show proficiency.
CPSC 6106. Fundamentals of Computer Programming and Data Structures. (3-0-3)
Computer programming, declaration of variables, definition of abstract data types,
data manipulation, conditional statements, loops, functions and routines, standard
input/output control, file manipulation, object-oriented programming, and data structures.
May not be applied to a degree program. Need a B or better to show proficiency.
CPSC 6118. Human-Computer Interface Development (3-0-3) Examines the
software development techniques used in the design of graphical user
interfaces. Particular emphasis is placed on available software
development tools for such interfaces. The course will focus on issues in
HCI (Human Computer Interaction).
CPSC 6119. Object-Oriented Development (3-0-3) This course teaches
object-oriented developing techniques and how to create advanced
applications using classes, components, and objects. Fundamentals of
developing client applications that include database access using
server-level components. Topics include creating and managing objects,
creating data services, testing, deploying and maintaining a component
CPSC 6125. Advanced Operating Systems (3-0-3) Issues in the design and functioning of operating systems. Emphasis on synchronization of concurrent activity in both centralized and distributed systems. Deadlock, scheduling, performance analysis, operation system design, and memory systems including distributed file systems.
CPSC 6126. Information Systems Assurance (3-0-3) Prerequisite: CPSC
5157 or equivalent. This course focuses on the protection of information systems against
unauthorized access to or modification of information whether in storage,
processing or transit, and against the denial of service to authorized
users, including those measures necessary to detect, document, and counter
such threats. This course creates sensitivity to the threats and
vulnerabilities of information systems, recognition of the need and means
to protect data and information, and builds a working knowledge of
principles and practices in information security.
CPSC 6127. Contemporary Issues in Database Management Systems (3-0-3)
This course provides an overview of modern database management systems and
issues relating to these systems. Topics include developing a logical
model, deriving the physical design, creating data services, creating a
physical database, and maintaining a database in a variety of
CPSC 6128. Network Security (3-0-3) Prerequisite: CPSC 6126.
This course examines the fundamentals of security issues arising from
computer networks. Topics include intrusion detection, firewalls, threats
and vulnerabilities, denial of service attacks, viruses and worms, use and
effectiveness of encryption, secure transactions and e-commerce, and
CPSC 6129. Advanced Programming Languages (3-0-3) Prerequisite:
CPSC 5135. A study of the principles, concepts, and mechanisms of
computer programming languages-their syntax, semantics, and pragmatics;
the processing and interpretation of computer programs; programming
paradigms; and language design. Additional topics will include language
design principles and models of language implementation.
CPSC 6136. Advanced System Security (3-0-3) Prerequisite:
CPSC 6126. This course provides the student with the skill or ability to
design, execute, and evaluate information security procedures and
practices. This level of understanding will ensure that students are able
to apply security concepts while performing their tasks. Topics include
encryption algorithms, developing a security policy, attack monitoring,
attack response, and disaster planning and recovery. The student will be
presented with practical approaches to security and the use of security
CPSC 6137. Distributed Software Architecture and Design (3-0-3)
Prerequisite: CPSC 6119. This course emphasizes distributed software
architecture. Topics include project, technology, and resource management;
establishing business requirements; analyzing project scope;
infrastructure; technology migration; and security requirements.
CPSC 6155. Advanced Computer Architecture (3-0-3) Prerequisite:
CPSC 5155 or equivalent. A comparative study of the architecture and
organization of several types of computers currently in production. Issues
in the design of the ISA (Instruction Set Architecture) and the control
units used to implement them, including cost and performance trade-offs.
Study of methods currently in use to improve CPU performance. Some
attention will be paid to super-computers, parallel-execution engines, and
other high-performance units.
CPSC 6157. Network Management (3-0-3) Prerequisite: CPSC
5157. Application of networking concepts related to the management of
computer networks. Includes topics related to setup, management, and
maintenance of networks. Additional topics will include network protocols
used to manage computer networks.
CPSC 6159. Computer Forensics (3-0-3) Prerequisite: CPSC
6126. Review of the specific manifestations of cybercrime, including
hacking, viruses, and other forms of malicious software. Methods to
investigate cybercrime, focusing on requirements for collection and
reporting of evidence for possible use in criminal cases. Topics include
an overview of the forensic relevance of encryption, the examination of
digital evidence for clues, and the most effective way to present evidence
and conclusions in a court of law.
CPSC 6166. Distributed Enterprise Software Development (3-0-3)
Prerequisites: CPSC 6127 and CPSC 6137. This course teaches how to
build distributed multi-tier enterprise client-server applications that
access corporate databases. The course focuses on development of
three-tiered distributed software systems with user interface, business
logic, and database server tiers.
CPSC 6167. Network Risk Assessment (3-0-3) Prerequisite:
CPSC 6126. This course introduces risk analysis techniques that can be
used to identify and quantify both accidental and malicious threats to
computer systems within an organization. Introduction to issues associated
with physical site security. This includes an introduction to standard
risk analysis tools, such as PARA and FRAP.
CPSC 6175. Web Site Development and Technologies (3-0-3) This
course teaches the fundamentals of Web technologies and Web site
development. This course covers many open technologies including XML and
its related standards.
CPSC 6176. Enterprise Web Application Development (3-0-3)
Prerequisite: CPSC 6127. This course teaches how to perform web site
architectural planning, make technology selection, and create
enterprise-level Web sites. Topics include database connectivity options;
distributed object technologies; n-tier client/server applications;
transaction systems; web-enabled applications; source code management and
version control; and application installation, deployment, and security
CPSC 6177. Advanced Software Design (3-0-3) Examines software
requirements and design methodologies. Studies defining software
requirements: interacting with end-users to determine system requirements
and identifying functional, performance, and other requirements. Examines
techniques to support requirements including prototyping, modeling, and
simulation; the relation of requirements to design; design in the system
life cycle; and hardware versus software trade-offs. Discusses subsystem
definition and design and covers principles of design, including
abstraction, information hiding, modularity, and reuse. Uses examples of
CPSC 6178. Software Testing and Quality Assurance (3-0-3) This
course examines the relationship between software testing and quality with
an emphasis on the role of requirements in validating test results. Focus
on designing tests specific to detection of security flaws, such as buffer
overflows and memory leaks. Includes an overview of structured analysis
and design, as well as other traditional methods of software engineering.
CPSC 6179. Software Project Planning and Management (3-0-3) Centers
on the concept of a software engineering process and includes discussion
of life-cycle models for software development. Addresses issues associated
with the successful management of software development including planning,
scheduling, tracking, cost and size, estimating, risk management,
configuration, management quality, and engineering and process
improvement. Includes the SEI software process Capability Maturity Model (CMM)
and other process standards.
CPSC 6555. Selected Topics in Computer Science (3-0-3) Study of
topics of special interest in the field of computing. May be repeated for
CPSC 6698. Graduate Internship in Computer Science (0-15-3)
Prerequisites: Unconditional admission to the Computer Science
graduate program, full-time student with an overall GPA of 3.0. This
course provides an opportunity to graduate students to apply knowledge
gained in academic courses to the real world. Internships serve the dual
purposes of developing hands-on technical skills and interpersonal skills
for the student. In addition to being remunerated by the place at which
the internship is conducted, the student also obtains course credit. Work
undertaken during an internship must be relevant to the student�s course
of study. May be repeated once for credit.
CPSC 6899. Independent Study (3-0-3) Course project approved and supervised by an appropriate member of the graduate faculty. May be taken twice for credit.
CPSC 6985. Research and Thesis (3-0-3) Application of a student's
coursework to a significant and current problem in computer science. This
involves a research project to be designed in consultation with a member
of the graduate faculty of the Computer Science Department who agrees to
direct the research and become the thesis advisor. Additional requirements
A) The creation of a thesis committee of at least three members of the
graduate faculty of the Computer Science Department.
B) A proposal approved by the Chairperson of the Computer Science
Department in consultation with the student's thesis committee.
C) Successful defense of the thesis to the thesis committee.
May be taken twice for credit. (S/U grading)