Computer Science Course Offerings

Kutztown University offers a wide range of courses for Computer Science majors and minors. 

Descriptions for Computer Science courses can be found by following the links below:

  • 100 Level Computer Science Courses

    CPSC 101 - Computer Applications

    3 sh

    This course provides an overview of essential computer concepts and file management, followed by coverage of software applications, including word processing, spreadsheets, and presentations. Students will learn current versions of these software applications.

    Prerequisite: None.

    CPSC 102- Computer Graphics

    3 sh

    This course introduces students to designing visual compositions using image-manipulation and illustration-capture software. Topics include image editing, typography and layout as well as creative design theory and critical analysis. Discussions will include the impact of visual works on ethical decision-making and biases that can be present in artistic works.

    Prerequisite: None.

    CPSC 105 - Introduction to Data Visualization

    3 sh

    Have you ever wondered how computers can make data look interesting and readily understandable? Data visualization is a computing process that can make data more understandable and approachable. Visualization can be done by people who have little experience with computers beyond browsing and using email. This course teaches students about different kinds of data visualizations and also how to create them. Reading charts, graphs, and more complex data visualizations is an important skill; knowing how to create these from data is also an important skill.

    Prerequisites: None.

    CPSC 111 - Computer Forensics

    3 sh

    This course is an introduction to the basic concepts of computer forensics. It will teach the student how to identify, preserve, recover, analyze and document data on a computer or network allegedly used to commit a crime.  Topics include computer architecture, operating systems, encryption/decryption, preserve and document evidence, and analyzing computers and networks for evidence.  

    Prerequisite: Any math course.

    CPSC 120 - Introduction to Creative Graphical Coding

    3 sh

    This course is for students who want to go beyond using prepackaged software tools for editing graphical images. Students will create interactive images, videos, and multimedia compositions using a programming language specifically designed for these applications. Projects include the program-driven display of basic shapes and imported images, display properties such as texture and shading, display-time image composition, generative art, interaction with user gestures, three-dimensional graphics, animation, video, and additional topics as time allows. The programming environment includes extensive language and library support for these activities while simplifying the steps in introductory programming. There will be solo and/or team projects.

    Prerequisite: None.

    CPSC 122 - Client-side Web Development

    3 sh

    This course introduces fundamentals of client-side website development using industry-standard practices and programming languages. Basic concepts, including the World Wide Web (WWW), client-server interaction, and front-end/back-end site development will be introduced. Web Page content and formatting will be covered using Hypertext Markup Language (HTML). Presentation and style management, and its separation from content, will be addressed using Cascading Style Sheets (CSS). User interactivity and site behavior will be explored using JavaScript, which will also serve to introduce fundamental programming language concepts and constructs. Issues associated with site organization, development, and management will be discussed.

    Prerequisite: None.

    CPSC 123 - Introduction to Scientific Programming

    3 sh

    This course is designed to help the student develop sound programming methodology using the modern programming languages prevalent in scientific communities, as well as scientifically oriented specialized tools and libraries, to gain an understanding of the key concepts in computer science, and to develop skills that can be applied to programming in a scientific environment. Topics include basic concepts of computer languages relating to data flow and execution flow - control constructs, functions, variables and data structures.  Additional topics will include applications to scientific problems and specialized extensions to programming languages via packages. Programming assignments will be designed so that each student will write code pertinent to her/his scientific specialty.

    Prerequisite: None.

    CPSC 125 - Discrete Math for Computing I

    3 sh

    This course is designed to ensure that students reach the level of mathematical maturity necessary for the study of computer science and information technology. This course encompasses a study of predicate calculus, sets, functions, relations, counting techniques, discrete probability, and graph theory.

    Prerequisite: (ALEKS >= 61) or (MATH 105 or higher).

    CPSC 130 - Information Technology Fundamentals

    3 sh

    This course is an introduction to the basic concepts of Information Technology (IT). This course is required for IT majors and is intended to provide for most of these students the first introduction to IT as an academic discipline.  Topics include hardware and software basics, database concepts and queries, computer networks, systems design, the IT profession, and its responsibilities, and legal and ethical issues raised by IT.  

    Prerequisite:  None.

    CPSC 135 - Computer Science I

    3 sh

    An introduction to computer components; algorithmic design and the constructs of structured programming; elementary data types and data operations; programming in a high-level language; one-and-two dimensional arrays; functions and top-down, modular, step-wise programming; computer solution of several numerical and non-numerical problems.

    Prerequisite: (ALEKS >= 61) or (MATH 105 or higher) or (C or better in (CPSC120 or CPSC122 or CPSC123).

    CPSC 136 - Computer Science II

    3 sh

    This course extends the topics developed in CPSC 135. Additionally, the course will cover concepts of data abstraction and encapsulation as part of the object-oriented paradigm, pointers, recursion, and beginning data structures such as stacks and queues.

    Prerequisite: CPSC 135 or equivalent with a C or better.

    CPSC 150: Ethical, Legal, and Professional Impacts of the Digital Age      3 sh

    This course covers ethical, legal, and professional issues germane to the computer science and information technology disciplines. Students will acquire foundational knowledge sufficient to identify significant current issues that can arise for a professional in our discipline and also an ability to identify potential effects resulting from advances in digital technology. Key topics that will be covered encompass ethical, moral, and legal aspects of digital technology. The impacts of these topics on personal, social, political, and educational environments will be discussed and debated. Theoretical and practical sides of issues will be included.

    Prerequisite:  None.

  • 200 Level Computer Science Courses

    CPSC 220 - Object-Oriented Multimedia Programming

    3 sh

    This course introduces students to object-oriented programming in the context of implementing multimedia systems. Object-oriented programming topics include classes, information hiding and encapsulation, delegation, several types of inheritance, mechanisms for code reuse, and design for flexible refactoring. Students will use object-oriented programming to manipulate graphical images, video streams, audio signals, physical devices containing electronic sensors and effectors, and a partial combination of these media. There will be solo and team programming projects.

    Prerequisite: (CPSC120 or CPSC123 or CPSC135) with a grade of C or better. 

    CPSC 223 - Advanced Scientific Programming

    3 sh

    This course takes students deeper into the theory of scientific programming, building on a foundation of sound programming methodology and an understanding of the modern programming languages prevalent in scientific communities and of the specialized tools and libraries. A thorough grounding in computer science principles will enable the student to gain knowledge and skill to best leverage these tools for scientific study and research. Topics include basic concepts of problem analysis and program design both from a procedural and structural standpoint - algorithm development, algorithm analysis, data structures, data storage, data analysis, and data visualization. Additional topics will include applications to scientific problems.

    Prerequisites: (C or better in CPSC123) or (C or better in CPSC135).

    CPSC 225 - Discrete Math for Computing II

    3 sh

    This course is the second in a two-course discrete mathematics sequence designed to ensure that computer science students reach the level of mathematical maturity necessary for the study of computer science. This course encompasses a study of methods of formal proof, induction, counting, graphs, recursion, algorithm specification, and algorithm analysis.

    Prerequisite: CPSC 125 and (CPSC120 or CPSC123 or CPSC 135).

    CPSC 235 - Computer Organization and Assembly Language

    3 sh

    This course is designed to provide an understanding of the organization and internal execution of a program by a modern digital computer.

    Prerequisites: CPSC 136 and CPSC 125.

    CPSC 237 - Data Structures

    3 sh

    This course is an examination of basic data structures used to store and manipulate data. The use of classes and library data structures to represent abstract data types is included, as well as user-defined implementations, some of which are implementations of abstract data types. Analysis and evaluation of data structures and the algorithms associated with them is an integral part of this course.

    Prerequisites: CPSC125 and (C or better in (CPSC136 or CPSC220 or CPSC223 or CPSC243)).

    CPSC 240 - Fundamentals of Game Development

    3 sh

    This introductory course explores key concepts in game development, including game development life cycle (GDLC), game programming, modern game engine and development tools, game attributes, principles of gaming, and teamwork. Particularly, preproduction and hands-on 2-D and 3-D character creation, movement, and collision will be explored in detail.

    Prerequisite: A grade of “C” or better in one of the following courses: CPSC120 or CPSC123 or CPSC135.

    CPSC 241 - Advanced Visual Basic Programming

    3 sh

    This course is a study of some of the advanced features of Visual Basic. This study would include window design, database access, and object-oriented features of the language.  Under window design, such topics as menus, list boxes, common dialog boxes, and multiple form interfaces will be studied. Under database access, such topics as creating/opening a database and reading/writing with a database will be studied. Object-oriented concepts such as classes and controls will be covered.

    Prerequisites: CPSC135 or CPSC112.

    CPSC 242 - Server-side Web Development

    3 sh

    This course is an introduction to the basic concepts of client/server scripting on the Web mainly focused on server-side scripting and backend databases. Topics will include: Web architecture, standards, and infrastructure, client/server architecture on the Web client-side cookie usage, server-side data processing, information storage, backend databases and security issues with web applications.

    Prerequisite: C or better in (CPSC120 or CPSC122 or CPSC123 or CPSC135)

    CPSC 243 - Java Programming

    3 sh

    This course introduces the student to event-driven, object-oriented programming using the Java programming language. The student is introduced to the design, creation, use, and communication that take place among objects. The student will learn how to develop and use graphical user interfaces to represent objects and their environments and handle exceptions when they occur.

    Prerequisites: C or better in (CPSC120 or CPSC123 or CPSC135).

    CPSC 252 - UNIX: Scripting and Administration

    3 sh

    This course deals with the study of the UNIX operating system - particularly, systems programming and administration. Under the former, such topics as UNIX commands, filters, shell scripts, system security, user accounts, system backup and rebooting, and associated utilities are studied. In addition, software procurement and installation will be illustrated. Meaningful applications, which illustrate the topics, will be given. 

    Prerequisite: CPSC120 or CPSC122 or CPSC123 or CPSC135.

    CPSC 253 - Information Technology Systems

    3 sh

    Information Technology comprises the part of computing that provides solutions to problems using computer-based technologies. Representing the fundamental vehicle through which computing solutions are provided, the technologies that make up these solutions are continually evolving. The course introduces the student to information technology systems, specifically the basic concepts used to define, build, and maintain information technology systems. Students will be introduced to the major technologies that are used in information technology systems, how these technologies are assembled into operating system architecture, and the principles of systems and information management.

    Prerequisite: (C or better in one of (CPSC111 or CPSC120 or CPSC122 or CPSC123 or CPSC135)) and (Sophomore Status or CyberSecurity Certificate).

    CPSC 256: SQL Programming

    3 sh

    The Structured Query Language (SQL) is the standard programming language used to create, modify, and query relational databases. The purpose of this course is to provide a comprehensive coverage of the SQL language.

    Prerequisite: CPSC120 or CPSC123 or CPSC135 or CPSC243.

    CPSC 273 - Computing Systems Integration

    3 sh

    This course focuses on the integration of information systems in organizations, which is the process by which different computing systems and software applications are interconnected. It examines the strategies, methodologies, and implementation for combining interdependent systems, enabling two or more applications to interact and exchange data seamlessly. The course will explore various trends in computing system integration, including Enterprise Resource Planning (ERP) software, cloud computing, and mobile integration.

    Prerequisite: CPSC237 or CPSC253.

    CPSC 280 - Cooperative Internship in Computer Science I

    6 sh

    Supervised industrial experience at the level of apprentice programmer or information technologist. Available only to CS and IT Majors. All arrangements for a cooperative internship are to be made through the Computer Science and Information Technology Department, and approval by both advisor and department chairperson are necessary.

    Prerequisites: Completion of 12 CPSC credits numbered 120 or higher and minimum 2.0 GPA (overall).

  • 300 Level Computer Science Courses

    CPSC 310 - Programming Languages

    3 sh

    This course deals with the main constructs of contemporary programming languages and the tools necessary for the critical evaluation of existing and future programming languages. It provides an in-depth discussion of programming language structures, presents a formal method of describing syntax, and introduces approaches to lexical and syntactic analysis.

    Prerequisites: CPSC237 AND Junior status AND a GPA in the CPSC courses of 2.25.

    CPSC 311 - Computer Networks

    3 sh

    Computer networks have become ubiquitous in our society. In-depth understanding of their workings is an important part of the foundation of knowledge not only for a computer science student who intends to incorporate networking in their scholastic or professional endeavors, but for anyone working in the discipline, as networking concepts are applicable in many areas inside and outside the discipline. The students will learn the terminology and implementation of computer networks and the physical components of networks, including cabling and devices, as well as how these components work. Several application-layer protocols will also be studied, including HTTP, E-mail, DNS and DHCP.

    Prerequisites: (CPSC237 or CPSC253) AND Junior Status.

    CPSC 320 - Two-Dimensional Game Development

    3 sh

    This course expands two-dimensional game concepts from the Fundamentals of Game Development course. Topics in this course include focusing on production and testing, team collaboration on detailed design, interdisciplinary integration of the arts and engineering skills, game development project management, and applications of artificial intelligence (AI). Students will have an opportunity to create two or more original 2-D games.

    Perequisites: (CPSC136 or CPSC220 or CPSC223 or CPSC243) AND (“C” or better in CPSC240).

    CPSC 323: Three-Dimensional Game Development

    3 sh

    This course is a continuation of the Fundamentals of Game Development with a focus on the production phase and launching the game. Students will continue utilizing their interdisciplinary skills to collaborate on common projects, fine-tune game engine skills along with other state-of-the-art tools, and develop games. Students will also have the opportunity to learn three-dimensional concepts and tools related to augmented reality (AR), virtual reality (VR), legal, and game security fundamentals. Students will implement two or more original games using these aspects of game development.

    Prerequisites: (CPSC136 or CPSC220 or CPSC223 or CPSC243) AND (“C” or better in CPSC240).

    CPSC 325 - Introduction to Computer Science Theory

    3 sh

    This course covers computer science skills required to understand, model, and devise efficient solutions for problems. These skills include techniques for modeling problems, determining the inherent complexity of problems, devising appropriate solutions for problems, and analyzing the efficiency of problem solutions. Topics include automata theory, computability theory, computational complexity, and algorithm design strategies.

    Prerequisites: (C or better in CPSC 225) AND (C or better in CPSC 237) AND Junior Status.

    CPSC 328 - Network and Secure Programming

    3 sh

    This course provides coverage of the basics of network programming methodology and implementation with the inclusion of relevant aspects of security. Topics that will be covered are network protocols and interprocess communication (IPC) facilities, including pipes and sockets. Applications using both UDP and TCP will be implemented and analyzed. Both the client and server sides of network applications will be designed and implemented. Application layer security requirements will also be discussed.

    Prerequisites: (CPSC237 or CPSC253) and Junior status.

    CPSC 330 - Introduction to Mobile Architecture and Systems

    3 sh

    This course introduces students to the concepts of technology mobility and the role that new and smaller computing devices play in new systems development. The student will be introduced to the field of mobile systems architecture and will apply this knowledge to the creation of architectures using both mobile and traditional computing resources. Following this, the student will learn about development using today's popular mobile devices and develop their own architecture and system based on mobile devices.

    Prerequisites: (CPSC237 or CPSC253) and CPSC243.

    CPSC 341 - Introduction to Information Security

    3 sh

    This course is an introduction to the basic concepts of information security. Topics include security threats, attacks, defenses against attacks, risk management, basic cryptography, and trusted information systems. Students will have an opportunity to learn a variety of state-of the-art tools that are being used in industry. There will be hands-on applications to strengthen concepts learned in class.

    Prerequisites: (CPSC 237 or CPSC 253) AND (Junior status or Cybersecurity Certificate).

    CPSC 342 - Web Technologies

    3 sh

    This course is an introduction to the basic concepts of technologies that are used on the Web.  Topics include Web basics, standards, and infrastructure, client/server architecture on the Web, page presentation using markup languages and style sheets, the Document Object Model (DOM), client-side programming and server-side programming, Web data representation, and Web services.

    Prerequisites: C or better in CPSC242 and Junior Standing.

    CPSC 343 - Operating Systems

    3 sh

    This course is an introduction to the basic software components of an operating system. Topics include process management, storage management, processor management, auxiliary storage management, evaluation of an operating system's performance, networks, operating system security, and case studies of particular operating systems.

    Prerequisites: (CPSC237 or CPSC253) AND Junior status AND at least a 2.25 GPA in CPSC courses.

    CPSC 351 - Digital Forensics

    3 sh

    Digital Forensics entails the collection, organization, explanation, and presentation of evidence assembled in the course of investigations initiated by legal and law enforcement personnel to substantiate or refute legal proceedings of a criminal or non-criminal nature. Because computer scientists play a key role in defining and using technologies for digital forensics, their involvement in such activities is extremely critical. The purpose of this course is to engage the student in digital forensics activities from three viewpoints. The first viewpoint involves looking at digital forensics from the standpoint of the activities and issues faced by the digital forensics expert. The second viewpoint is to consider the nature of the contributions that computer scientists can make to the field of digital forensics through the creation and advancement of algorithms to aid in forensics analytical tasks. Finally, the third viewpoint will be to examine digital forensics from the viewpoint of the legal personnel involved and to consider their requirements for evidence and explanation.

    Prerequisite: CPSC341.

    CPSC 354 - Software Engineering I

    3 sh

    This is the first course in a two-semester capstone sequence. This course introduces the fundamental principles of software engineering. Coverage will include the System Development Lifecycle (SDLC) methodologies, capturing requirements, design modeling, project management, risk management, and quality assurance. Students will learn techniques for requirements elicitation, prioritization, validation, and specification. They also will be introduced to various design models that are used to capture requirements.

    Prerequisite: Completion of 24 CPSC credits, numbered 125 or higher AND a GPA of 2.25 in the CPSC courses.

    CPSC 355 - Software Engineering II

    3 sh

    This is the second course in a two-semester capstone sequence. This course presents the advanced principles of software engineering. Coverage will include the professional responsibilities of the software engineer, implementation, testing, configuration management, and project management.  Students will be introduced to different development and testing approaches.

    Prerequisite: Completion of CPSC354 with a grade of C or better AND a GPA of 2.25 in the CPSC courses.

    CPSC 356 - Introduction to Database Management Systems

    3 sh

    Database technology is fundamental to all information technology. Seldom is there a system that has been developed today without having some kind of database component. This course provides the students with a fundamental understanding of database concepts, how to create, modify, and access databases, the different types of databases, and an introduction to advanced database topics.

    Prerequisite: (CPSC253 or CPSC237) AND Junior Status AND at least a 2.25 GPA in CPSC courses.

    CPSC 361 - Finite Automata & Formal Languages

    3 sh

    Introduction to a series of models for computation and their relationship to formal languages that are useful in the definition of programming languages along with a look at the theoretical limits of computers. Topics include finite and pushdown automata, Turing machines, grammars, and decidability.

    Prerequisites: CPSC310 AND completion of 18 credits of CPSC courses numbered 125 or higher AND a GPA in the CPSC courses of 2.25.

    CPSC 363 - Interdisciplinary Software Rapid Prototyping

    3 sh

    This course combines students from computer science and information technology programs with students taking a course offered by another academic department into interdisciplinary teams that solve a problem or create a prototype product within the domain of that application discipline or disciplines. Student teams analyze problems or opportunities in the disciplinary application domain. They use rapid prototyping techniques that combine off-the-shelf software and custom software to create a prototype software system, and they present or exhibit this system to an audience interested in the domain.

    Prerequisites: Completion of 24 CPSC credits, numbered 125 or higher AND a GPA in the CPSC courses of 2.25 in the CPSC courses.

    CPSC 372 - Independent Study and/or Projects in Computer Science

    3 sh

    This course involves individual, independent study in some area of computer science under the direction of a CS group staff member. This study can be made in any of the areas of analog and hybrid computers, artificial intelligence, automate theory, business information systems, computer-aided design, computer-assisted instructions, computer graphics, computer mechanisms and devices, computer systems, computer telecommunication, computer typesetting, information retrieval, linguistic processing, mechanical languages, numerical analysis, programming theory, or switching systems and logical design, and others. A student may register for this course more than once, up to a maximum of six hours of credit.

    Prerequisites: Consent of the student's advisor, instructor, and department chairperson.

    CPSC 380 - Cooperative Internship In Computer Science II

    3 - 6 sh

    Continuing supervised industrial experience in computer programming and related areas. Available only to CS majors. In this internship, the student must function more independently and engage in projects of greater complexity than those of CSC 280. Prerequisites: CSC 280, completion of 18 CSC credits numbered 120 or higher and minimum 2.0 GPA (overall). All arrangements for a cooperative internship are to be made through the Computer Science and Information Technology Department, and approval by both advisor and department chairperson are necessary.

    Prerequisites: CPSC280 and approval by the department chair is required.

    CPSC 385 - Computer Science Seminar

    3 sh

    A study of topics in computer science designed to integrate and apply the concepts and the knowledge acquired throughout the student's academic career and intense experience in applying both knowledge and concepts to a major programming project.

    Prerequisites: Completion of 36 CPSC credits, numbered 125 or higher and a GPA of 2.25 in the CPSC courses.

    CPSC 398 - See Honors Supplementary Research

    1 - 3 sh

  • 400 Level Courses in Computer Science

    CPSC 402 - Data Structures II

    3 sh

    This course is the second course in data structures. It is designed to present the computer science student with depth of knowledge in the area of data structures. The course is a study in advanced topics of data structures, focusing on their structure, efficiency and application. Data structures introduced or expanded include graphs, sets and trees.

    Prerequisite: CPSC237 or unconditional admission to a graduate program in CS.

    CPSC 411 - Advanced Networking

    3 sh

    This course deals with the theory, implementation, and administration of networks. It is also concerned with the various layers of the Internet architecture stack, with a concentration on layers 3 and 4. The primary protocols for these layers, Transmission Control Protocol (TCP) and Internet Protocol (IP), will be studied in detail. Network addressing and related protocols will also be covered.

    Prerequisites: CPSC311 or unconditional admission to the Graduate program.

    CPSC 415 - Design and Analysis of Algorithms

    3 sh

    This course examines the algorithm design and analysis techniques. Contents include analysis of algorithm efficiency, recursion, divide and conquer, decrease and conquer (incremental approach), transform and conquer, dynamic programming, greedy algorithm, and basic search and sorting.

    Prerequisites: (CPSC225 and CPSC 237) or unconditional admission to the Graduate Program in CPSC.

    CPSC 421 - Web-Based Software Design & Development

    3 sh

    This course introduces students to web-based software design. Using object-oriented techniques, the students will learn how to develop mainly on the client side of event-based web applications. Projects will build rudimentary knowledge of event-based design and then expand upon those foundations to create web-based software and to add multimedia enhancements, including audio, video, and animation. The completion of projects using these features is an integral part of the course.

    Prerequisites: (CPSC237 or CPSC253) and CPSC243 or unconditional admission to a graduate program in CS.

    CPSC 425 - Principles of Compiler Design I

    3 sh

    Content of this course includes multi-phase, translation, lexical analysis, parsing, LL, LR, and LALR parser constructors, error recovery, symbol table organization, static semantic analysis, and the interpretation of formal semantics.

    Prerequisites: CPSC 310 or unconditional admission to a graduate program in CS.

    CPSC 441 - Advanced Information Security and Ethical Hacking

    3 sh

    This course is an in-depth study of security threats and attacks, and cryptosystems. The course also demonstrates the ethical use of various cyber penetration testing tools and techniques. Students are exposed to various computer hacking skills and analyze various protective measures and their effectiveness. Steps in the ethical hacking process include reconnaissance/footprinting, scan/enumerate, gain access, maintain access and clear tracks. 

    Prerequisite: CPSC341 or unconditional acceptance into the graduate program.

    CPSC 445 - Introduction to Intelligent Robotics

    3 sh

    This course deals with the theory and implementation of intelligent robotics and autonomous agents. The history, fundamental principles, elements, and algorithms of intelligent robots, both in simulation and in the real world, will be examined. Fundamental issues and debates regarding design and implementation and their roots in knowledge representation and theoretical computer science will be investigated. Using the knowledge gained, students will implement actual designs.

    Prerequisite: CPSC237 or CPSC253 or unconditional admission to a graduate program in CS.

    CPSC 447 - Artificial Intelligence I

    3 sh

    An overview of artificial intelligence is presented, including its history, concepts, techniques and ethical implications. An artificial intelligence programming language (e.g., LISP, Prolog) will be introduced.

    Prerequisites: CPSC237 or CPSC253 or permission of instructor.

    CPSC 456 - Database Management Systems I

    3 sh

    Database systems are an integral component of almost every information technology system. This course introduces essential database concepts, data models, database design principles, data normalization, and query languages primarily from a relational database point of view. Various real-world problems of moderate to high complexity are discussed to design and implement database applications.

    Prerequisites: CPSC356 or unconditional acceptance in graduate program or instructor's permission.

    CPSC 458 - Data Mining and Predictive Analytics I

    3 sh

    Many academic and commercial endeavors apply the techniques of data mining and predictive analytics to their data sets. Students taking this course will learn methods and software tools for locating and obtaining data of interest, for preparing data for semi-automated analysis, for interacting with software tools in analyzing data for patterns, for visualizing structural and dynamic patterns in data, and for designing systems that respond to patterns in data. Data cleaning and formatting require some programming in a modern scripting language. Other course activities include learning to use off-the-shelf software tools to accomplish the tasks of data analysis. 

    Prerequisites:  At least sixty university credits completed and (a grade of “C” or better in CPSC223) and (a grade of “C” or better in one of the following courses: MATH140 or MATH150, or MATH301 or POLI/PSYC/SOCI200 or SOCI201 or BUSN120); or unconditional acceptance into a graduate program in CS. 

    CPSC 459 - Introduction to Big Data

    3 sh

    This course explores key data management and analysis techniques, which deal with massive datasets to enable real-time decision-making in distributed environments, business intelligence in the Web, and scientific discovery on a large scale. In particular, map-reduce parallel computing paradigms and associated technologies, such as distributed file systems, NoSQL databases, and basic machine learning methods, will be explored.

    Prerequisites: At least sixty university credits completed and (a grade of “C” or better in CPSC223) and (a grade of “C” or better in one of the following courses: MATH140 or MATH150, or MATH301 or POLI/PSYC/SOCI200 or SOCI201 or BUSN120); or unconditional acceptance into a graduate program in CS.

    CPSC 464 - Human Computer Interaction

    3 sh

    This course is designed to provide an understanding of the principles of user interface design for software, and also to gain practical experience designing interfaces for existing software applications.

    Prerequisites: CPSC237 or CPSC253 or unconditional admission to a graduate program in CS.

    CPSC 472 - Independent Study and/or Projects in Computer Science

    1 - 6 sh

    This course involves individual independent study in some area of computer science under the direction of a CS group staff member. This study can be made in any of the areas of analog and hybrid computers, artificial intelligence, automate theory, business information systems, computer-aided design, computer-assisted instructions, computer graphics, computer mechanisms and devices, computer systems, computer telecommunication, computer typesetting, information retrieval, linguistic processing, mechanical languages, numerical analysis, programming theory, or switching systems and logical design, and others. A student may register for this course more than once up to a maximum of six hours of credit.

    Prerequisites: Consent of the student's advisor, instructor, and department chairperson.

    CPSC 480 - Selected Topics in Computer Science

    3 sh

    An in-depth study of a specialized area of computer science.  Content will vary from semester to semester.  May be repeated with a different topic.

    Prerequisites: Permission of instructor, advisor, and department chairperson.

  • 500 Level Courses in Computer Science

    CPSC 505 - Fundamentals of Computer Systems

    3 sh

    This course discusses the design and organization of modern computer systems, including fundamental hardware and software building blocks. The course provides a comprehensive introduction to computer organization and computer communications. Topics related to computer organization include Boolean logic, number systems, data representation and formats, hardware building blocks, processor architectures, memory and storage subsystems, input/output systems, and operating system functions. Topics related to computer communications including synchronous and asynchronous data communication, and local and wide area networks will be studied.

    Prerequisites: Unconditional acceptance into the graduate program.

    Note: A student in the combined MS/BS program cannot receive credit for this course if they passed CSC235.

    CPSC 510 - Operating Systems

    3 sh

    This course reviews the basic software components of an operating system and includes advanced topics, including distributed processing and distributed process management, evaluation of an operating system's performance, networks, operating system security, case studies of particular operating systems.

    Prerequisites: CPSC505, or unconditional acceptance into the graduate program or permission of instructor.

    CPSC 512 - Network Architecture and Protocols

    3 sh

    This course deals with the implementation of all TCP/IP details.  Algorithms at all layers of the TCP/IP architecture will be examined.  Network, hardware, and management will be explored in detail.

    Prerequisites: CPSC411 or unconditional acceptance to the graduate program.

    CPSC 516 - Design and Analysis of Algorithms II

    3 sh

    More advanced topics in the design and analysis of algorithms will be covered.  Included will be branch and bound technique, NP-Hard and NP-Complete problems, approximation algorithms and some well-known case studies.

    Prerequisites: CPSC415.

    CPSC 520 - Advanced Object-Oriented Programming

    3 sh

    This course introduces the concepts of object-oriented programming languages, object-oriented analysis and design, and design patterns, and demonstrates their use in the development of an object-oriented implementation of a major project. The Unified Modeling Language (UML) is used to develop the project's design and implementation. A current programming language is used throughout the course to illustrate major concepts and implement the project.

    Prerequisites: Unconditional acceptance into the graduate program or permission of the instructor.

    CPSC 521 - Web-Based Client & Server Software Development

    3 sh

    With the growth of computing and web-based applications, new concepts and techniques continue to evolve. It behooves computer science students who intend to work in any area involving web development to understand concepts and tools used to design and implement web-based applications. This course provides students the opportunity to learn and practice foundational aspects of both client and server-side web-based applications. Students will learn how to develop both server and client-side applications that employ current technology. Design and implementation of an advanced piece of web-based software over several development phases is the central activity in the course.

    Prerequisites: Unconditional acceptance into the graduate program.

    CPSC 523: Advanced Scripting for Data Manipulation, Analysis, and Machine Learning

    3 sh

    This course covers advanced study and practice in using a modern scripting language to integrate off-the-shelf code libraries for the retrieval of unstructured and partially structured data, and for the cleaning, integration, formatting, storage, analysis, and visualization of large data sets. Modern scripting languages include powerful built-in features for storing, retrieving, mapping, and integrating data; code libraries extend such features greatly. Libraries include those for regular-expression based extraction of textual data, data integration, statistical analysis and correlation, machine learning, natural language processing, machine vision and listening visualization, and storage in files and database systems. Emphasis is on using a scripting language to glue together off-the-shelf library modules without writing the complex, underlying library code.

    Prerequisites: unconditional acceptance into a graduate program in CS.

    CPSC 526 - Principles of Compiler Design II

    3 sh

    This is a project-oriented course in the implementation of a compiler of a simple programming language.  Topics studied will include intermediate program representations, code generation and address assignment, register allocation and assignment on general-register machines, run-time storage administration, data-flow analysis, and code improvement.

    Prerequisites: CPSC425 or permission of the instructor.

    CPSC 540 - Engineering Enterprise Object-Oriented Systems

    3 sh

    This course explores the life cycle of enterprise object-oriented frameworks, including incremental analysis, architecture, design, implementation, documentation, and support. The keystone to the course is the maintenance and extension of a framework-based software component system, using current industrial framework technology, that performs useful work for customers and that persists across semesters. Topics include communication with customers and support personnel, requirements collection and analysis, build versus buy decisions for software components, specification-based application generation, rapid prototyping, categories of testing, and software tools for automation of these activities.

    Prerequisites: CPSC421 or CPSC520 or CPSC521 or permission of the instructor.

    CPSC 541 - Network Security

    3 sh

    This course is an in-depth study of network security and the associated protocols.  Topics include network application security, including e-mail and web, and authorization, including user authorization and certificates.  Protocols associated with these security concepts will be studied. The concepts of the above will be explored and discussed.  The student will have to implement some concepts learned.   

    Prerequisite:  CPSC341 or CPSC441 or unconditional acceptance to the graduate program.

    CPSC 543 - Multiprocessing and Concurrent Programming

    3 sh

    This course explores the concepts and practices of creating software that makes effective use of modern multiple-processor computers. Emphasis is on partitioning program code and data for safe and efficient execution on multiple processors that share machine resources such as memory. Lab exercises include construction, execution and benchmarking of multithreaded programs on several multicores, multithreaded computers. Prerequisites: Unconditional acceptance into the graduate program.

    Prerequisite:  Unconditional acceptance to the graduate program.

    CPSC 548 - Artificial Intelligence II

    3 sh

    A study of advanced topics in artificial intelligence (AI) focusing on those aspects of AI which are most relevant to the design and construction of intelligent agents: control, knowledge acquisition and representation, reasoning with knowledge, planning and carrying out actions.

    Prerequisites: CPSC 447  or permission of instructor.

    CPSC 552 - Advanced UNIX Programming

    3 sh

    This course studies the concepts of dealing with UNIX system programming.  A lot of emphases will be placed on working with processes and interprocess communication (IPC).  Details of various aspects of IPC will be explored and implemented, including pipes, semaphores, sockets, message queues, and shared memory.

    Prerequisites: Unconditional acceptance to the graduate program or permission of the instructor.

    CPSC 554 - Project Management

    3 sh

    This course discusses the principles of project management which are considered mandatory for the success of business projects. The focus of discussion is project management in general and information systems project management in particular. Though behavioral and organizational aspects of project management are discussed, the emphasis is more on learning tools and techniques which provide quantitative insight during the project management life cycle. These tools and techniques are required to effectively plan, monitor and control the projects. In this course, students also get the opportunity to work on projects simulating real-world situations to practice concepts and techniques learned in this course.

    Prerequisites: CPSC354 or unconditional acceptance to the graduate program.

    CPSC 555 - Applied Cryptography

    3 sh

    An introduction to the computer-based cryptographic systems, focusing on the underlying theory and on the design and application of such systems.  Topics include classical cryptosystems, cryptographic protocols, cryptographic techniques, cryptographic algorithms, cryptanalysis, and real-world applications of cryptosystems.

    Prerequisites: Unconditional acceptance into the graduate program or permission of instructor.

    CPSC 556 - Database Management Systems II

    3 sh

    This course introduces the design issues involved in the development of a database management system itself. It discusses physical database design, file structures and access methods, query optimization, transaction processing, concurrency control, database recovery, database security, and database administration. It also discusses advanced topics typically distributed databases, data warehousing, and data mining.

    Prerequisites: CPSC 456.

    CPSC 558 - Data Mining and Predictive Analytics II

    3 sh

    This course covers advanced study and practice in data mining and predictive analytics. Topics include understanding, configuring, and applying advanced variants of data association, classification, clustering, and statistical analysis engines analyzing and applying underlying machine learning algorithms, exploring instance-based, support vector, time-series, ensemble, graphical, and lazy learning algorithms, meta-learning, neural nets, genetic algorithms, and validating results. The course examines topics specific to very large data sets. Data cleaning and formatting require some programming in a modern scripting language. Other course activities include using, extending, and customizing off-the-shelf machine learning software systems to accomplish the tasks of data analysis.

    Prerequisites:  CPSC 458. 

    CPSC 570 - Independent Study and/or Projects in Computer Science

    3 sh

    This course involves individual independent study in some area of computer science under the direction of a CS group staff member. This study can be made in any of the areas of analog and hybrid computers, artificial intelligence, automate theory, business information systems, computer-aided design, computer-assisted instructions, computer graphics, computer mechanisms and devices, computer systems, computer telecommunication, computer typesetting, information retrieval, linguistic processing, mechanical languages, numerical analysis, programming theory, or switching systems and logical design, and others. A student may register for this course more than once up to a maximum of six hours of credit.

    Prerequisites: Consent of the student's advisor, instructor, and department chairperson.

    CPSC 580 - Special Topics in Computer Science

    3 sh

    An in-depth study of a specialized area of computer science.  Content will vary from semester to semester.  May be repeated.

    Prerequisites: Consent of the instructor, advisor and department chairperson.

    CPSC 590 - CS Cooperative Internship

    3 sh

    The internship is designed to give students industrial, supervised practical experience in a Computer Science-related position. The internship can be done at any company associated with the Computer Science department or one of the intern's choosing. All arrangements for a cooperative internship are to be made through the Computer Science Department, and approval by both advisor and department chairperson are necessary. Once completed, the employer is required to submit an evaluation of the student. 150 work hours.

    CPSC 599 - Graduate Thesis in Computer Science and Information Technology

    1-6 sh

    This course is for those MS candidates completing a thesis. Its content is computer science and/or information technology research under the direction of a thesis advisor who is a member of the graduate faculty. A student will ordinarily register for 6 hours of credit to be taken over a period of two semesters; however, other configurations are possible, including one hour for a thesis that is incomplete after six hours with some substantial work remaining. The course is repeatable up to a maximum of 12 total credits for the course. 
    Departmental guidelines require the student to have successfully completed at least 6 semester hours of courses in the computer science and information technology MS program.

    Prerequisites: Acceptance in the graduate program and consent of the student's advisor and the department chairperson.