Computer Science Course Descriptions

CPS 1000. Ethics in Computer Science (1 credit)
This course explores ethical issues that arise due to widespread use of computer technology. Students will become familiar with issues related to professional ethics, ethical use of the internet, privacy issues, property rights of software, accountability and social implications of information technology.

CPS 1110. Computer Literacy (2 credits)
This course presents students with a study of various systems and methods of problem-solving by computers and other means through use of examples, simple exercises and theory. Further topics include using computer systems for word processing, Internet browsing, PC spreadsheets and databases, and other desk top publishing techniques.

CPS 1191. Computer Programming I (4 credits)
This course is designed to provide an introduction to programming using C++. Topics include algorithms, flow-chart, pseudo-code, top-down design, branching, looping, arrays strings, basic input and output (I/O) operations, scientific applications using C++ programming language. Prerequisite: MTH 1750 or permission of the instructor.

CPS 1192. Computer Programming II (4 credits)
Importance of program design, modular function and object-oriented programming; flow-charting, pseudo-code, and top-down design, use of text files, binary files, and fundamentals of higher languages such as C/ C++. Prerequisite: CPS 1191.

CPS 2215. Internet and Web Essentials (3 credits)
This course teaches students topics pertaining to World Wide Web (WWW) fundamentals, contemporary Web browsers, Web editors, Web development tools, Internet tools and services, Internet searching, web site design, web page publishing, JavaScript, Java Applets, CGI, Web security, creating dynamic web pages using a database and other web enabling tools.

CPS 2236. Contemporary Operating Systems (2 credits)
The objective of this course is to teach basics of an operating system from the point of view of both end-users and programmers. Existing popular operating systems such as Windows, Linux and Mac OS will be used as practical examples to work with. Students will learn about the history of Operating Systems, Computer Security Basics, Desktop Virtualization, Disk Operating System (DOS) and the Command-Line Interface, Windows, Linux, and Mac OS X. Prerequisite: None.

CPS 2271. Data Structures (3 credits)
This course introduces students to data structures, including topics on linked lists, doubly linked lists, circular lists, stacks, queues, search strategies, hashing, internal sorting algorithms, external sort / merge algorithms, binary trees, B-trees, B +- trees, sequential files, random access files, file update algorithms, bit maps, and memory management algorithms. Prerequisite: CPS 1192.

CPS 2300. Cyber Security I (3 credits)
The objective of this course is to introduce students to the field of cybersecurity, network and internet architecture. Students will study technologies, security protocols, policies and practices designed to protect networks, computers, programs, and data from attacks. The students will also learn about viruses and other vulnerabilities, and cyberattacks and the techniques for identifying, detecting and defending against cybersecurity threats. Prerequisite: CPS 1191.

CPS 3200. Computer Algorithms (3 credits)
This course covers the modern theory of algorithms, common algorithmic paradigms, the relationship between algorithms and programming, basic performance measures and analysis techniques for real world problems. The course goal is to provide a solid background in algorithms for computer science students, in preparation either for a job in industry or for more advanced courses at the graduate level. Prerequisite: CPS1192.

CPS 3300. Cyber Security II (3 credits)
This is the second cyber security course after Cyber Security I. The student will learn contemporary security technologies and issues, infrastructure security management processes, risk analysis, security planning, analysis and safeguards, industrial espionage, cyber terrorism, information warfare, security policies, contingency planning, incidence handling and response, and security standards. Prerequisite: CPS 2300.

CPS 3316. Computer Networks (3 credits)
This course teaches students fundamentals of computer networks, covering topics on local and wide area networks, media, topologies, layered networking models, hardware and software; network setup and administration, network architecture, communication protocols, and aspects of network administration that include server folders and permissions. Prerequisites: CPS 1191 or its equivalent.

CPS 3320. Database Systems (3 credits)
The objective of this course is to introduce relational database systems and provide practical experience in using a popular database package. Contemporary database systems such as Oracle and Microsoft Access will be used extensively in this course. Students will learn about relational database principles, the SQL query language, application development using forms, creating and using tables and queries, database design and implementation issues. Prerequisites: CPS 1192 or permission of instructor.

CPS 3325. Java Programming (3 credits)
The objective of this course is to teach the basics of Java programming and object-oriented programming. Students will learn both Applets and Application programming in Java. The topics covered include compilers and interpreters, objects and primitive data, control flow, writing classes, enhancing classes, arrays and vectors, inheritance, exceptions, I/O streams, software engineering, recursive programming, and implementation of data structures. Prerequisites: CPS 1191 or its equivalent.

CPS 3340. Computer Architecture (3 credits)
The goal of this course is to give students a solid foundation in the fundamental concepts of CPU, memory system and I/O system design, and to expose them to a number of more advanced topics in these areas. Instruction set architecture, memory subsystem organization, interfacing concepts and issues arising in managing communication with the processor.

CPS 3465. High Performance Computing (3 credits)
Fundamentals of parallel computing including shared memory paradigm, semaphores, and dead lock; distributed memory paradigm including point-to-point and collective message passing constructs in MPI, parallel I/O, vector and structure derived data types; speed-up and scalability, checkpoint restart, parallel debugging; techniques, performance profiling, graphical and visualization techniques; parallel libraries, and systems modeling applications in high performance computing. Prerequisite: CPS 2271 and MTH 2503 or permission of the instructor.

CPS 4210. Artificial Intelligence (3 credits)
Introduction to concepts, principles, challenges and research in major areas of technical AI research. Areas of discussion include: natural language and vision processing, machine learning, machine logic and reasoning, expert systems, and robotic. Prerequisite: CPS 2271.

CPS 4420. Software Engineering (3 credits)
This course teaches students design and implementation issues for large software systems, software life cycle, requirements definition and specification, prototyping, verification, validation, equivalence classes and testing, fault-tolerance, social and ethical issues of commercial software, user interface, design, portability, and management. The goal of this course is to introduce students to methods for producing large-scale commercial software. They learn techniques for managing hardware, software, and personnel systems using a group-oriented project production paradigm. Prerequisite: CPS 2271.

CPS 4460. Advanced Topics (1-3 credits)
This course is designed to meet the needs of advanced students as a preparation for graduate study or students who are interested in modern topics that are not presented in other courses. Projects required in CPS 4460 must be distinguished from those in other courses. Prerequisites: Permission of instructor.

CPS 4895. Senior Project (3 credits)
Students work under the mentorship of a faculty member to design, implement and present a capstone computer science project. Each student selects a topic for the project subject to approval of the faculty mentor, conducts a feasibility study and prepares a project design using flowcharts, structure charts and pseudo-code along with documentation and references. Each student must implement the project design and submit all program listings, data files, and report listing showing results of appropriate test runs. Each student must write a paper on the project from the external documentation and prepare appropriate visual aids for an oral presentation of the project to the Department. Prerequisite: CPS4420 or permission of the instructor.