CPSC - Computer Science
CPSC 1105. Technological Solutions (3-0-3)Equivalent Course: ITDS 2745 seminar, Computers and the World Wide Web and CISM 2105. A problems solving course using the newest technologies to develop an understanding of and skills in electronic communications, information retrieval, word processing and desktop publishing, spreadsheet and data analysis, and electronic presentation techniques. Emphasis will be placed on using technology to solve practical problems.CPSC 1301. Computer Science 1 (3-0-3) 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 1302. Computer Science 2 (3-0-3) Prerequisite: CPSC 1301. 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: CPSC 1301 or successful completion of the ICAPP program. 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. 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. 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 database connectivity.
CPSC 2175. Object-Oriented Design (3-0-3) Prerequisite: CPSC 2108. An introduction to designing windows applications using object-oriented and component technologies. Course emphasizes event-driven programming using controls and components to develop desktop windows applications.
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. 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 3117. Visual Basic Programming (3-0-3) Prerequisite: CPSC 2108. 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. A popular and powerful development environment Visual Basic will be used in this course. Subjects covered include: Visual Basic environment, controls, creating menus, VB programming, working with forms, OLE objects, ActiveX controls, adding Internet access, providing help systems, and Windows API. Extensive lab work and programming required.
CPSC 3121. Assembly Language Programming 1 (3-0-3) Prerequisite: CPSC 2105 or Admission to the ICAPP program. 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. 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. 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. 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. 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 3112. 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 introduced.
CPSC 3165. Professionalism in Computing (3-0-3) Prerequisite: CPSC 1302. 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 3555. Selected Topics in Computer Science (1-3 hours) Prerequisite: CPSC 2108. 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 4125. Introduction to Server-Side Web Development (3-0-3) Prerequisites: CPSC 2125 and CPSC 3131. 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 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 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) Prerequisite: CPSC 2108 and MATH 3125 or CPSC 3115, or Admission to the Masters in Applied Computer Science program. 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. 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. 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. 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. 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. 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. 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. 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. 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 5166. Web Development Projects (3-0-3) Prerequisites: CPSC 4125 and CPSC 4175. 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. 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 6118. Graphical User 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 based solution.
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 environments.
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 network exploits.
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 tools.
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. Covers theory of parallelism, advanced hardware technology and software for parallel programming. The main contents are parallel computer models; program and network properties; principles of scalable performance; processor and memory hierarchy, bus, cache, and shared memory; pipelining and superscalar techniques; multiprocessors and multicomputers; multivector and SIMD computers; scalable, multithreaded, and dataflow architectures; parallel models, languages, and compilers; and parallel program development and environments.
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 cybercirme, 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 issues.
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 design paradigms.
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.
CPSC 6899. Independent Study (3-0-3) Course project approved and supervised by an appropriate member of the graduate faculty.
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 include:
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)