KSAWorks
KSAWorks
Knowledge • Skills • Abilities
Pennsylvania State University-Penn State Erie-Behrend College · Courses

CMPSC

94 courses with the subject CMPSC, each shown exactly as we captured it from the college's catalog, with every element we hold. Where the wording looks broken, that is our reading of the catalog, not the college's text.

CMPSC 100Computer Fundamentals and Applications3

Introduction to computer fundamentals and applications to data processing environments. Enforced Prerequisite: MATH 21 or satisfactory performance on the mathematics placement examination.

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 101Introduction to Programming3-4

or CMPSC 203 Introduction to Spreadsheets and Databases or MIS 204 Introduction to Management Information Systems

Subject
CMPSC
Credits (min)
3
Credits (max)
4
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 102Introduction to Visual Programming3

Problem solving for non-majors; high-level language programming; controlstructures, functions, parameters, recursion, arrays, records/ structures; verification; debugging; documentation.

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
Prerequisite
2 entrance units in mathematics
CMPSC 111Logic for Computer Science1

An introduction to logic and its application to problem solving and computer science. CMPSC 111S Logic for Computer Science (1)Computer Science provides the fundamental tools for analyzing problems and designing solutions to these problems which can be implemented on a computer. Logic plays an important role in this process, from a general-purpose tool for reasoning about knowledge to a special-purpose language for specifying the behavior of programs and designing hardware. This course examines the role of logic in problem solving and its application to computer science and computer engineering. Example problems will be drawn from a variety of sources, including brain teasers, puzzles, and mathematics. We will show how these problems and their solutions apply to real problems involving computers. We will also explore a number of the important areas of computer science and computer engineering including Boolean and Digital Logic, Designing Arithmetic Hardware, Cryptography and Security Programming Languages, Networking and Wireless Communication, Artificial Intelligence, and Computer Ethics.

Subject
CMPSC
Credits (min)
1
Credits (max)
1
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 121Introduction to Programming Techniques3

or CMPSC 131 Programming and Computation I: Fundamentals

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 122Intermediate Programming3

or CMPSC 132 Programming and Computation II: Data Structures

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 122HIntermediate Programming3

Object-oriented programming, recursion, fundamental data structures (including stacks, queues, linked lists, hash tables, trees, and graphs), the basics of algorithmic analysis, and an introduction to the principles of language translation.

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 1313 Supporting Course3

*

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 132Programming and Computation II: Data Structures3

or CMPSC 122 Intermediate Programming

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 150NComputing and Society3

3 COMM 20N Critical Media Literacy 3

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 197Special Topics1-9

/Maximum of 9 Formal courses given infrequently to explore, in depth, a comparatively narrow subject which may be topical or of special interest.

Subject
CMPSC
Credits (min)
1
Credits (max)
9
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 199Foreign Studies1-12

/Maximum of 12 Courses offered in foreign countries by individual or group instruction.

Subject
CMPSC
Credits (min)
1
Credits (max)
12
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 200Programming for Engineers with MATLAB3

or CMPSC 201 Programming for Engineers with C++ Select 3 credits from the following: 3 ENGL 15 Rhetoric and Composition ENGL 30H Honors Rhetoric and Composition ESL 15 ESL Composition for American Academic

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 201Programming for Engineers with C++1

CMPSC 202 Supporting Courses and Related Areas Supporting Courses and Related Areas: Require a grade of C or better Select 12 credits from 400-level ASTRO courses Requirements for the Option

Subject
CMPSC
Credits (min)
1
Credits (max)
1
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 203Introduction to Spreadsheets and Databases4

ECON 102 ECON 104 Introductory Microeconomic Analysis and Policy Introductory Macroeconomic Analysis and Policy

Subject
CMPSC
Credits (min)
4
Credits (max)
4
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 204Introduction to Computational Sciences Programming3

This introductory programming course teaches the foundations of programming and computational problem solving for scientific and engineering domains. The emphasis of the course is on computation as a problem-solving tool for highly mathematical intensive applications. The course includes the study of core programming concepts, including data types, data structures, control structures, functions, and problem decomposition, and then continues with techniques applicable to modeling and visualizing scientific data. Students gain experience solving scientific and engineering problems by translating mathematical specifications into computational solutions, using a variety of mathematical and related libraries. They also gain experience developing solutions that provide visual representations of the results. Enforced Prerequisite at Enrollment: MATH 141

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 205Intermediate Computational Sciences Programming3

This course introduces intermediate concepts of programming including object-oriented programming, dynamic data structures, and data visualization and data modeling. The core of this course covers data analysis, efficient usage of data structure, simulations, data visualizatio and data structure collections. The topics include, but are not limited to, the study and the use of lists, stacks, queues, and hash tables. Emphasis will revolve around application to scientific computing libraries in conjunction with data abstraction, object-oriented program design, data visualization, and data manipulation. Hands-on programming assignments and usage of scientific libraries are the integral part of this course. Enforced Prerequisite at Enrollment: CMPSC 204 or CMPSC 121 or CMPSC 131

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 208Technical Game Development3

Introduction to the tools and techniques required to implement games in a virtual environment. GAME 250 / CMPSC 208 Technical Game Development. First, students learn about game and player elements by creating characters and objects and the means of user interactivity. Both orthographic and perspective views are introduced to assist in character design. Objects and characters are created using fundamental geometric primitives like scale, rotation, translation and extrusion. The set operations, union, intersection, and subtraction, are applied to create compound objects. Bezier and NURB curves are introduced to create objects with irregular contours. Students also learn to design graphical user interfaces (GUIs) and handle mouse and keyboard events to support user interactions. Second, students are introduced to methods of storytelling and guide them to build narratives for games. Methods of proximity and collision detection in the environment are studied for both static and dynamic objects. Dynamic objects are programmed to move and behave in a deterministically, random, or probabilistically under a variety of lighting methods including ambient, directional, point and diffuse lights are introduced. A number of particle systems are developed with different considerations of randomness, vector direction and velocity. The concept of linear interpolation is illustrated and applied to texture mapping to improve the look and feel of objects. Third, students are introduced to functions, propositional logic, loops, and randomness to model game behavior. Students will learn to combine a series of primitive actions into a function for control and reuse. Propositional logic will guide students to define conditions and develop game rules. Loops are introduced to simplify the implementation of repeated game behavior. Randomness enables the simulation of many life-like object movements. Students will learn and practice how to write concurrent, event drive and sequential processing algorithms for game objects. Fourth, students are introduced to the game development process of pre-production, production and post-condition phases and have them apply it to their own project. The topic of maintenance will be introduced with an emphasis on refactoring techniques, critical to improving the quality of game and providing flexibility for future updates. This course has a significant applied element. Game engine tools are used to develop prototypes of games and playtest them. Lab assignments are given throughout the semester and a final project requires students to demonstrate mastery of all aspects of the course. Enforced Prerequisite at Enrollment: MATH 21 Cross-listed with: GAME 250 Bachelor of Arts: Quantification General Education: Quantification (GQ) GenEd Learning Objective: Creative Thinking GenEd Learning Objective: Key Literacies n, CMPSC 221: Object Oriented Programming with Web-Based Applications The course covers advanced object-oriented principles and their application to web-based, net-centric computing. Major topics include virtual machines, intermediate code generation (Java-specific),

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 221Object Oriented Programming with Web-Based3

4 Applications 4 CMPSC 451 Numerical Computations 3 4 Additional Courses 4 Select one of the following: 3 2 STAT 318 Elementary Probability 2 STAT 319 Elementary Mathematical Statistics

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 222Advanced Data Structures and Algorithms in C3

This course provides a practical introduction to the design, implementation and analysis of advanced data structures and algorithms, using the C programming language and its related command line tools. Data structures include D-ary, Binomial and Fibonacci heaps; Red-Black, splay and quad-trees, along with algorithms for managing and manipulating them. Also covered is the implementation of graph data structures using adjacency lists and adjacency matrices. Graph algorithms studied include searching and minimum spanning tree construction. Pattern matching algorithms include Brute force, Boyer- Moore, KMP, and Rabin-Karp. Enforced Prerequisite at Enrollment: CMPSC 122 or CMPSC 132

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 263Blockchain and Modern Web Development3

This course covers the technical aspects and development behind blockchain technology with a primary focus on software implementation including Web3 development and the basics of JavaScript. Students will be taught the fundamentals of web development, blockchain-based application and architectures, smart contracts for running blockchains as decentralized applications, introduction to UI development, and applications of blockchain in industry. Overall, this class teaches the implementation of blockchain technology and web development in the modern world. Enforced Prerequisite at Enrollment: CMPSC 132 or CMPSC 122

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 296Independent Studies1-18

/Maximum of 18 Creative projects, including research and design, which are supervised on an individual basis and which fall outside the scope of formal courses.

Subject
CMPSC
Credits (min)
1
Credits (max)
18
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 297Special Topics1-9

/Maximum of 9 Formal courses given infrequently to explore, in depth, a comparatively narrow subject which may be topical or of special interest.

Subject
CMPSC
Credits (min)
1
Credits (max)
9
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 299Foreign Studies1-12

EDSGN 299

Subject
CMPSC
Credits (min)
1
Credits (max)
12
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 301Event Driven Programming for Computational Sciences3

This course focuses on the development of event-driven applications for problems found in science and engineering disciplines using object- oriented programming concepts, application programming interfaces, and event-driven programming techniques. Additional topics include stream I/O, data visualization, and user-interface design. Students will gain experience in the design and construction of independent and deployable applications that leverage their mathematical and problem-solving skills. Enforced Prerequisite at Enrollment: CMPSC 205

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 302Intermediate Visual Programming3

OO programming, visual programming, classes, objects, ADTs, inheritance, recursion, regular expressions, user-defined controls, documentation, testing, verification, productivity tools. CMPSC 302 Intermediate Visual Programming (3) This course forms the second of a two course sequence of courses for non-major students. It is designed to build upon concepts and skills presented in the first course, CMPSC 102, with the intent of enabling the student to develop larger scale programs and interface with databases and Web servers using a visual programming language. Some of the topics covered in this course will be object-oriented programming, inheritance, string manipulation, regular expressions, creating custom controls, creating controls dynamically, interfacing with databases and using an appropriate platform, such as ASPX.net to create web pages.This course forms the second of a two course sequence of courses for non-major students. It covers advanced features of the target language , building larger scale programs and interfaces to databases and web servers. It builds on the skills covered in CMPSC-102 and introduces creating new controls, dynamically placing controls at run time, arrays and lists of controls, the use of regular expressions, more in-depth treatment of classes and objects, including inheritance and polymorphism, multi-dimensional arrays, lists, unit testing and project deployment. Enforced Prerequisite at Enrollment: CMPSC 102 or CMPSC 121

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 311Introduction to Systems Programming3

Unix system programming in C; organization of programs and data; program analysis and support tools; software standards; common system functions. CMPSC 311 CMPSC 311 Introduction to Systems Programming (3) System Programming concerns the development of software components and methods for their combination, independent of any particular application. This course will provide information and experience required to understand, design and implement components of large software systems.In general, students should be able to evaluate design alternatives according to standard practice, specifications, performance analysis, robustness, etc. To concentrate attention, we investigate one system and one programming language in detail, through demonstration programs, short- and long-term programming assignments. The specific system is Unix, a family of operating systems forming a complete standardized programming environment based on the idea of software tools. The specific language is C, which is widely used for operating system implementations, and which forms the basis for the C++ and Java languages studied in the prerequisite courses. This will help students understand operating system services available

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 312Computer Organization and Architecture3

Data representation, digital logic, instruction set/control logic, machine/ assembly languages, advanced architectures, memory hierarchy, I/O devices, overall system design. Enforced Prerequisite at Enrollment: CMPSC 121 or CMPSC 131

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 313Assembly Language Programming3

Program design, addressing modes, subroutines, parameter passing, stacks, bit manipulation, text processing, DOS functions, macros, I/O, high level language interfaces. CMPSC 313CMPSC 313 Assembly Language Programming (3)This is a course in assembly language programming for IBM PCs and compatibles. Students will gain experience writing efficient, well-documented programs that are easily maintained. The course investigates the architecture and instruction set of a typical microcomputer based on the Intel 80x86 microprocessors. Topics include the basic structure of computers, the internal behavior of computers, program design, testing, debugging, machine architecture, addressing, BCD and binary arithmetic, subroutines and parameter passing, stacks, text processing, bit manipulation, DOS functions, macros, I/O routines, high level language interfaces and the assembly process.This course is important because assembly language is often used in programs where small size or fast execution is critical. Knowledge of assembly language is also useful in debugging programs written in high level languages. It also helps bridge the gap between hardware and high level languages.After successfully completing CMPSC 313, the student should be able to: explain the 80x86 architecture, including registers and segment:offset addressing; describe different ways data are represented in a computer and work with binary and hexadecimal numbers; describe the functions of an assembler; implement program designs in 80x86 assembly language, including: writing, documenting, testing and debugging a program in PC assembly language; manipulating strings; coding basic algorithms such as searching and sorting in assembly language; calling and passing parameters to subroutines; utilizing DOS functions; and interfacing with a high level language; explain how the underlying hardware affects software design and performance; appreciate the factors that contribute to program efficiency.Students will be evaluated on homework (35% of grade), semester exams (35%), and a final comprehensive exam (30%).The major only requires that a student have experience with assembly language programming. This course is intended for students who have not had any experience with assembly language programming before entering the program. It will also serve as an elective. The material learned in this course is beneficial in understanding concepts in the required courses CMPSC 422, CMPSC 472, and CMPSC 460, as well as in the elective courses CMPSC 428 and CMPSC 470.No special facilities are required for this course. The software necessary is available in the computer labs or for students to use at home. This course will be offered once per year, with an expected enrollment of 55. Enforced Prerequisite at Enrollment: CMPSC 312

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 315Computer Systems I4

This is the first of a two-course sequence to learn the foundations of the underlying hardware and systems software that enable programs to run on a computing platform. This first course covers the architectural issues in the design of modern processor hardware and the operating system software to manage this hardware. On the hardware side, this course covers processor Datapath design, pipelining, instruction scheduling and out-of-order execution, and dealing with branches, interrupts and hazards. Students will also learn about the importance of supporting protection modes in hardware. On the software side, coverage will include instruction set architectures, function calls and interrupt subroutine implementations, translation of C code to assembly, loaders/linkers, address space concepts, processes, threads, context switching and CPU scheduling. At the end, students will understand how to virtualize the processor hardware amongst co-existing activities, ensuring protection and isolation during their execution. Enforced Prerequisite at Enrollment: (CMPEN 270 or (CMPEN 271 and CMPEN 275)) and CMPSC 222

Subject
CMPSC
Credits (min)
4
Credits (max)
4
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 316Computer Systems II4

This is the second of the two course sequence to learn the foundations of the underlying hardware and systems software that enable programs to run on a computing platform. This course covers the hardware issues in the design of modern memory systems and I/O peripherals and the operating system software to manage such hardware. On the hardware side, this course covers cache design, main memory design, address translation hardware, atomic instructions, buses and interconnects, storage and network peripherals. On the software side, coverage will include concurrency control issues, memory allocation, virtual memory, file systems, device drivers, network programming, distributed systems and protection/isolation. For each hardware resource, students will learn hardware support for protection and software mechanisms to interface with and multiplex this hardware amongst co-existing entities, ensuring appropriate isolation and protection, with appropriate access control mechanisms. Enforced Prerequisite at Enrollment: CMPSC 315

Subject
CMPSC
Credits (min)
4
Credits (max)
4
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 320Software Engineering Principles3

This course is an introduction to software engineering concepts and principles, project management, and problem-solving for computer science. In this course, students will navigate the entire software development lifecycle and will be familiarized with: problem-solving methodologies for computer science; requirement engineering; project management for CS projects; risk management; software engineering processes; tools and methods for analysis and design of software; methods for testing and evaluating software; quality assurance; ethical and security issues in software engineering. This course gives the student the knowledge and skills needed to successfully develop non- trivial software systems, exploring also social and ethical issues pertinen to software engineering, including privacy, security, intellectual property responsibility, and social justice. Enforced Prerequisite at Enrollment: CMPSC 221

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 330Advanced Programming in C++3

In-depth study of various programming paradigm including procedural, object oriented, and generic programming in C++ programming language. The primary goals of this course are (1) to provide students with an in- depth knowledge of different programming paradigms, (2) to provide students with the ability to design and develop software using the paradigm that is appropriate to a given problem, and (3) to provide students with the programming concepts that are applicable to programming in other languages. The secondary goal of this course is to expose students to a diverse range of programming tasks using C++ programming language that is frequently used in the follow up courses as well as in industry. Enforced Prerequisite at Enrollment: C or better in CMPSC 122 or C or better in CMPSC 132

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 335Fundamentals of Communication Networks3

Introduction to the composition of communciation networks, including trans- mission mediums and protocols, transfer methods, topologies and software, and communications hardware.

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
Prerequisite
3 credits of programming
CMPSC 348Data Science and Machine Learning for3
Subject
CMPSC
Credits (min)
3
Credits (max)
3
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 360Discrete Mathematics for Computer Science3-4

3-4 or MATH 311W Concepts of Discrete Mathematics

Subject
CMPSC
Credits (min)
3
Credits (max)
4
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 397Special Topics1-9

/Maximum of 9 Formal courses given infrequently to explore, in depth, a comparatively narrow subject which may be topical or of special interest.

Subject
CMPSC
Credits (min)
1
Credits (max)
9
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 399Foreign Studies1-12

EDSGN 399

Subject
CMPSC
Credits (min)
1
Credits (max)
12
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 410Programming Models for Big Data3

Recommended Preparations: DS 310; CMPSC 448 This course introduces modern programming models and related software stacks for performing scalable data analytics and discovery tasks over massive and/or high dimensional datasets. The learning objectives of the course are that the students are able to choose appropriate programming models for a big data application, understand the tradeoff of such choice, and be able to leverage state-of-the art cyber infrastructures to develop scalable data analytics or discovery tasks. Building on data models covered in DS 220, this course will introduce programming models such as MapReduce, data flow supports for modern cluster computing environment, and programming models for large-scale clustering (either a large number of data samples or a large number of dimensions). Using these frameworks and languages, the students will learn to implement data aggregation algorithms, iterative algorithms, and algorithms for generating statistical information from massive and/or high-dimensional data. The realization of these algorithms will enable the students to develop data analytic models for massive datasets. Enforced Prerequisites at Enrollment: (CMPSC 122 or CMPSC 132) and (DS 220 or CMPSC 221) Cross-listed with: DS 410

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 412Data Structures Lab1.5

Programming with common data structures; recursion; stacks, queues, dictionaries, priority queues; string searching and manipulation; sorting; trees; combinatorics. Enforced Concurrent at Enrollment: CMPSC 462 or CMPSC 465

Subject
CMPSC
Credits (min)
1.5
Credits (max)
1.5
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 413Algorithms Lab1.5

Programming with common algorithm design techniques; divide and conquer, greedy method, dynamic programming, and tree and graphy traversals. Enforced Concurrent at Enrollment: CMPSC 463

Subject
CMPSC
Credits (min)
1.5
Credits (max)
1.5
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 414Contest Programming1

/Maximum of 4 This course provides hands-on practice with a wide range of computer science topics that are used to solve programming contest questions. These topics include common data structures; strings; sorting; combinatorics; number theory; graph traversal and other algorithms; dynamic programming. In the course, students will solve a range of programming contest questions, both using an online judge in practice sessions and during actual programming contests. In addition to solving programming problems, the course time will also be used to explore topics mentioned above and the relationship to specific problems, solution techniques, and the analysis of proposed solutions to specific problems. This course is envisioned to be a hands-on lab, with instructor supported, self-guided study. The course topics will be chosen from topics that commonly appear in current programming contests, including but not limited to: · Contest Programming · Common Data Structures · Strings · Sorting · Combinatorics · Number Theory · Graph Traversal and Other Algorithms · Dynamic Programming Enforced Concurrent at Enrollment: CMPSC 221 or CMPSC 330

Subject
CMPSC
Credits (min)
1
Credits (max)
1
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 421Net-centric Computing3

This course introduces JavaScript and AJAX for creating Rich Internet Applications, and XML for client-server communication and Web Services. CMPSC 421 Net-centric Computing (3) This course will build on the client-server computing concepts and techniques that students learned about in prerequisite courses. The goal of the course is to introduce students to the most significant and fundamental of those technologies that are used in the computing paradigm known by a number of terms including "Net-centric", "Web 2", and "cloud" computing. On the client: We will use Dynamic XHTML, Cascading Style Sheets, JavaScript and AJAX to develop the client side of Rich Internet (or Web) Applications. For client-server-communication: We will learn how to create and validate XML documents and use these as the primary language for transmission of data from the server to the client. We will also consider how JavaScript Object Notation (JSON) can sometimes be used as a viable alternative to XML for server to client data transmission. On the server: We will learn about a variety of server-side technologies fo consuming, storing, transforming, and generating content. We will use the three main types of XML parsers to consume, transform, and generate XML; we will use XSL and XPath to style and transform XML; we will use XML binding tools to convert XML to and from classes (in some high- level language); we will use Data Access Objects and object-relational mapping tools for data persistence. We will learn how servers use Web services and RSS feeds to provide XML structured content, and we will consume existing Web services and RSS feeds and produce simple Web services. Enforced Prerequisite at Enrollment: CMPSC 221 or SWENG 311

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 430Database Design3

The main goal of this course is to explore the relational database model, with special emphasis on the design and querying of relational databases. Secondary goals include exploration of the mathematical basis for relational databases and exploration of the relationship of database to the rest of computer science. Study of these topics should improve student skills in programming, modeling the structure of data and using and administering databases. After completing CMPSC 430 the student should be able to: (1) Demonstrate comprehension of general database concepts (2) Identify key issues in developing database systems and applications (3) Explain the general organization of a relational database and explain the functions of the basic relational operators (4) Use query languages, in particular, Structured Query Language (SQL), to define, maintain, and query relational databases (5) Model a relational database through entity-relationship (ER) modeling and construct ER diagrams (6) Explain the methodologies used to conceptualize and design database systems (7) Apply decomposition and analyze/construct functional dependencies (8) Demonstrate an understanding of the concepts of relation normalization and the supporting fundamental knowledge of efficient database implementation Enforced Concurrent at Enrollment: CMPSC 462

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 431WDatabase Management Systems3

Topics include: conceptual data modeling, relational data model, relational query languages, schema normalization, database/Internet applications, and database system issues. Enforced Prerequisite at Enrollment: CMPSC 221 and ENGL 202C Writing Across the Curriculum

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 432Exploratory Data Mining3

This course teaches fundamental concepts, algorithms and problem- solving techniques for exploratory data mining and their applications, with an emphasis on the algorithmic aspects. The course covers extensively the design of algorithms and implementations of software solutions to various exploratory data mining tasks. In addition, we discuss in depth various requirements and technical issues arising in the design and implementations of robust, efficient, effective and scalable software solutions. Topics covered include types and quality of data, similarity measures of data, algorithms and approaches for data processing/cleaning/analysis, data exploration, cluster analysis, association analysis, and anomaly detection. Additionally, basic concepts and techniques for predictive data mining, i.e., regression r and classification, are reviewed. Students will exercise the obtained knowledge to address important technical issues in realistic exploratory data mining tasks and applications. Because the knowledge of various

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 436Communications and Networking3

Data transmission, basic signaling, data encoding, error control, communication protocols, security, network topologies, routing, switching, internetworking, emerging high speed networks. CMPSC 436CMPSC 436 Communications and Networking (3)This course introduces the elements and architecture of computer and data communication networks, demonstrates the fundamental principles of computer networking, and provides experience in the practical use of current networking technology. Topics in this course include: data communications (basic signaling, data transmission, data encoding, errors and error control), communications architecture and protocols (communication protocols, internetworking, transport protocols, layered network architecture, network security) and computer networks (WANs, LANs, network topologies, internetworking, routing and switching strategies and emerging high speed networks).After taking CMPSC 436, students should be able to:1) understand the fundamentals of networking concepts and terminology2) define and contrast the classifications local area network (LAN), metropolitan area network (MAN), and wide area network (WAN)3) name and describe basic networking elements4) define the roles of clients, servers, and peers as they relate to computer networks5) define the term "protocol" and explain how it relates to computer networks6) identify specific network management areas and describe the organizational issues relating to each of themStudents will be evaluated on homework (35% of grade), semester exams (35%), and a final comprehensive exam (30%).This course is an elective in the computer science (COMP) BS curriculum. This course is intended to be taken by second semester juniors or seniors.No special facilities are required for this course. This course will be offered once per year, with expected enrollment of 60. Enforced Prerequisite at Enrollment: CMPSC 312

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 438Computer Network Architecture and Programming3

This course introduces elements and architecture of computer and data communication networks, demonstrates the fundamental principles of computer networking, and provides practical experience in the network application development. This course will provide an overview of computing network architectures and programming that are essential knowledge for many professionals working in computer science and information systems fields. Students will gain hands on experience in a range of network programming assignments. Enforced Prerequisite at Enrollment: CMPSC 312 and (CMPSC 221 or CMPSC 330) Undergraduate - The Pennsylvania State University 2026-2027 3925

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 440Data-driven Security Analytics3

Today's security event monitoring and correlation tools are being taxed more than ever before. The constant deluge of data being output by the many devices in our security infrastructures and input into log managers, SIEM (Security information and event management) and other security management interfaces creates quite a load on our analytics systems. In the noise of all this security and event-related data, it is difficult to sort through and obtain real, actionable events that need attention. The market is in need of a new generation of security tools - ones that process much larger datasets, are capable of deep-dive analytics and rely more on intelligence than attack signatures. The proposed course will cover the fundamental data science techniques that are applied to enhance security intelligence. This course will complement the existing computer science and software engineering curriculum. It also prepares students for both a career as a data scientist and as a cybersecurity analyst. Enforced Prerequisite at Enrollment: CMPSC 335 or CMPEN 461

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 4413 Supporting Courses: Select3

3 credits of 100-400 level courses in consultation with an academic adviser 15

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 442Artificial Intelligence3

This course provides an overview of the foundations, problems, approaches, implementation, and applications of, artificial intelligence. Topics covered include problem solving, goal-based and adversarial an search, logical, probabilistic, and decision theoretic knowledge representation and inference, decision making, and learning. Through programming assignments that sample these topics, students acquire an understanding of what it means to build rational agents of different sorts as well as applications of AI techniques in language processing, planning, vision. Enforced Prerequisite at Enrollment: CMPSC 221. Enforced Concurrent at Enrollment: CMPSC 465 Cross-listed with: DS 442

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 443Introduction to Computer and Network Security3

Introduction to theory and practice of computer security with an emphasis on Internet and operating system applications. Enforced Prerequisite at Enrollment: CMPEN 362 Enforced Concurrent at Enrollment: CMPSC 473

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 444Secure Programming3

Secure software design principles/practices, common threats, applied cryptography, trust management, input validation, OS-/programming language- specific issues, software validation. CMPSC 444 Secure Programming (3) This course presents an overview of the principles and practices of secure software design. The course begins with a presentation of overarching principles of secure software development that enable the design, implementation, and testing of secure systems that can withstand attacks. These principles and strategies for realizing them will be illustrated through an analysis of common security issues and pitfalls in the software development process. The course will cover a variety of programming languages including C/C++, Java, and scripting languages; different classes of systems including standalone applications, client/server systems, and peer-to-peer applications; and development issues specific to different operating systems. Students will develop and analyze programs that demonstrate security principles, strategies, coding techniques, and the use of tools that can help make code more resistant to attacks. Enforced Prerequisite at Enrollment: CMPSC 221 or CMPSC 330

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 445Applied Machine Learning in Data Science3

Applied machine learning techniques are used in many different areas, such as the classification, visualization and analysis of data, clustering, and understanding of natural languages for human-computer interactions. These applications are crossing the boundaries of computer science and data science. Big technology firms have all started offering their own cloud machine learning platforms. This course will start with an overview of supervised and unsupervised learning, and introduce the associated libraries. It covers basic machine learning concepts, tasks, and workflow using an example classification problem based on K- nearest neighbors, Naïve Bayes, Support Vector Machine (SVM), K-means, and implementation using Python libraries. Natural language processing (NLP) techniques including n-gram models, grammar, parse trees, and part-of-speech tagging will be discussed. The issue of dimensionality of data will be discussed, and the task of clustering data, as well as supervised approaches for creating predictive models will be described, and learners will be able to apply Python predictive modeling methods while understanding process issues related to data generalizability (e.g. cross validation, overfitting). The course will also look at more advanced techniques, such as neural network, feed-forward network, back-propagation and deep learning with cloud AI services. Technological differences between using cloud services at a higher level of abstraction and coding locally will be discussed. Students will be able to identify the difference between a supervised (classification) and unsupervised (clustering) technique, identify which technique they need to apply for a particular dataset, manage and understand data, and engineer features to meet that need. Students will work in teams to develop web applications that use industry standard cloud services provided by one of the AI cloud service providers. Enforced Prerequisite at Enrollment: STAT 318 and MATH 220 and (CMPSC 122 or CMPSC 132)

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 446Data Mining3

Data Mining is the process of discovering patterns, correlations, and trends, in large data sets. This course is designed to provide an overview of the data mining process, with an emphasis on data management, pattern discovery, and cluster analysis. Data management includes data selection, cleaning, clustering, visualization, and distributed data storage and processing. The course covers pattern mining concepts, including pattern discovery concepts, efficient pattern mining algorithms, and graph pattern mining. The classification problem is illustrated through decision tree algorithms and ensemble methods. Basic concepts of cluster analysis are introduced, followed by typical clustering algorithms, including partitioning methods, hierarchical clustering, and graph clustering. Applications of cluster analysis are also covered. The course concludes with a study of data mining in the context of graphs used to model a wide range of networks from social networks to biological networks to web pages on the Internet. Enforced Prerequisite at Enrollment: MATH 220 and (DS 220 or CMPSC 430 or CMPSC 431W) and (MATH 318 or STAT 318 or MATH 414 or STAT 414)

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 447Software Security3

This course explores the fundamental concepts and engineering processes of software development and testing to produce software that is designed for security. This course is intended as a senior-level course for computational majors such as computer science and computer engineering since it covers the exploitation of programs based on computer architecture, systems, and software concepts. First, software engineering considerations associated with a variety of software vulnerabilities will be analyzed, along with defensive programming techniques to avoid such vulnerabilities. The next part of this course will introduce systematic software engineering principles for building secure software to defend its attack surface, such as reference monitors, privilege separation, information flow, and program verification. The third part will focus on methods for security testing of software including fuzz testing, symbolic execution, grey-box testing, and forensics. The final week of the course will examine adding security into the software engineering life cycle. The design and implementation of techniques to develop reference monitors, information-flow secure programs, testing mechanisms and enhancements, as well as defensive programming against prominent software vulnerabilities will be studied and analyzed. Upon completion of the course students will be able to critically analyze the design and implementation of software for security flaws and build security mechanisms to prevent exploitation of such flaws. Enforced Prerequisite at Enrollment: CMPSC 443 Recommended preparation: CMPSC 360

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 448Machine Learning and Algorithmic AI3

or CMPSC 445 Applied Machine Learning in Data Science Select 3 credits from the following: 3

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 449Foundations of Natural Language Processing3

This course imparts foundational concepts, algorithms, and problem- solving techniques essential for mastering natural language processing (NLP). It delves into key NLP challenges, encompassing both classification and generation problems. The curriculum is structured around computational methods across three stages: pre-deep learning, deep learning, and large language models. Covered topics include word embeddings, sentiment analysis, question answering, dialogue systems, deep learning for NLP, large language models, and standard evaluation metrics. Students will apply acquired knowledge to tackle significant technical issues in real-world NLP tasks and applications. Prospective students are required to complete prerequisite courses to ensure a solid foundation in background knowledge and programming skills, facilitating success in the course. Enforced Prerequisite at Enrollment: (STAT 318 or STAT 414 or STAT 418 or EE 465) and MATH 220 and CMPSC 221

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 450Concurrent Scientific Programming3

Problems of synchronization, concurrent execution, and their solution techniques. Design and implementation of concurrent software in a distributed system. Enforced Prerequisite at Enrollment: (CMPSC 121 or CMPSC 131 or CMPSC 201) and MATH 220 and (MATH 230 or MATH 231)

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 451Numerical Computations3

ALGORITHMS FOR INTERPOLATION, APPROXIMATION, INTEGRATION, NONLINEAR EQUATIONS, LINEAR SYSTEMS, FAST FOURIER TRANSFORM, AND DIFFERENTIAL EQUATIONS EMPHASIZING COMPUTATIONAL PROPERTIES AND IMPLEMENTATION. STUDENTS MAY TAKE ONLY ONE COURSE FOR CREDIT FROM MATH 451 AND 455. Enforced Prerequisite at Enrollment: (CMPSC 101 or CMPSC 121 or CMPSC 131 or CMPSC 200 or CMPSC 201) and (MATH 230 or MATH 231) Cross-listed with: MATH 451 Bachelor of Arts: Quantification

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 455Introduction to Numerical Analysis I3

Floating point computation, numerical rootfinding, interpolation, numerical quadrature, direct methods for linear systems. Students may take only one course for credit from MATH 451 and MATH 455. Enforced Prerequisite at Enrollment: (CMPSC 201 or CMPSC 202 or CMPSC 121 or CMPSC 131) and MATH 220 and (MATH 230 or MATH 231) Cross-listed with: MATH 455 Bachelor of Arts: Quantification Undergraduate - The Pennsylvania State University 2026-2027 3927

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 456Introduction to Numerical Analysis II3

Polynomial and piecewise polynomial approximation, matrix least squares problems, numerical solution of eigenvalue problems, numerical solution of ordinary differential equations. Enforced Prerequisite at Enrollment: MATH 455 Cross-listed with: MATH 456 Bachelor of Arts: Quantification

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 457Computer Graphics Algorithms3

Graphics systems/hardware, color models, transformations, projections, clipping, hidden line/surface removal, aliasing, parametric curves/ surfaces, 3D modeling animation. CMPSC 457CMPSC 457 Computer Graphics Algorithms I (3)Concepts and techniques needed to draw geometrical objects with a discrete device: Coordinate systems, clipping, curves and regions, geometric transformations, parallel and projective projections, hidden line and surface removal, animation. Enforced Prerequisite at Enrollment: CMPSC 330 and MATH 220

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 458Fundamentals of Computer Graphics3

Fundamentals of computer graphics: input/output devices, transformation, projection, clipping, hidden line/surface elimination. Enforced Prerequisite at Enrollment: CMPSC 311 and MATH 220 and (MATH 230 or MATH 231)

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 460Principles of Programming Languages3

Design and implementation of high level programming languages and survey of language paradigms including imperative, functional, and object-oriented programming. CMPSC 460 Principles of Programming Languages (3) The primary topics of this course include run-time systems for imperative programming languages and aspects of the object- oriented, functional and declarative paradigms that have applications in industrial software development. Study of these topics should improve student skills in programming, debugging and problem solving. Enforced Prerequisite at Enrollment: CMPSC 312 and CMPSC 462 Enforced Concurrent at Enrollment: CMPSC 469

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 461Programming Language Concepts3

hnology CMPSC 465 Data Structures and Algorithms 3 redits DS/CMPSC 410 Programming Models for Big Data 3

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 462Data Structures3

or CMPSC 465 Data Structures and Algorithms Two (2) additional CMPSC courses for six more credits of 400-level 6 work in computer science Peace and Conflict (Minor) Code Title Credits PLSC 14 International Relations 3

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
Prerequisite
ALEKS score > 75 or MATH 22 and MATH 26 ALEKS score > 45
CMPSC 4633 General Education Course2

(Exploration) ENGL 202C (GWS) 3 CMPSC 445 STAT 401 3 CMPSC 469 CMPSC 430 3 CMPSC 460

Subject
CMPSC
Credits (min)
2
Credits (max)
2
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 464Introduction to the Theory of Computation3

Computability/Complexity: finite automata, regular & context-free languages, Turing machines, Church-Turing Thesis, undecidability, reducibility, completeness, time/space complexity, P versus NP. CMPSC 464 Introduction to the Theory and Computation (3)CMPSC 464 introduces students to an essential part of theoretical computer science: how to define abstract mathematical models of computational devices (automata), how to characterize their computational power by studying the family of languages that they can recognize (formal languages), and what the limitations of even the most powerful computational devices are (computability). The course studies regular languages by means of deterministic and nondeterministic finite-state automata and regular expressions; it studies context-free languages through the use of context- free grammars and pushdown automata; and it studies computability by means of Turing machines and recursive and recursively-enumerable languages. The unsolvability of the halting problem for Turing machines is proved by a diagonalization argument, and this result is then used to show that various problems about languages are unsolvable, such as the problem of determining whether two context-free grammars generate the same language. Finally, the concept of computational complexity is introduced, and the classes P and NP are defined. (Informally, the former class consists of problems that can be solved computationally in a manageable amount of time, and the latter consists of problems for which a proposed solution can be verified in a manageable amount of time.) The concept of an NP-complete problem is defined, and some specific problems are proved to be values to the variable of a Boolean formula that will make the formula true). Enforced Prerequisite at Enrollment: CMPSC 465

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 465Data Structures and Algorithms12

Supporting Courses and Related Areas Select 3 additional credits from advanced courses in computer 3 science and engineering, mathematics, or statistics 34 Select 12 credits in consultation with adviser from department list 12

Subject
CMPSC
Credits (min)
12
Credits (max)
12
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 466Introduction to Quantum Computation3

In this course, we will focus on the benefits brought by quantum mechanics to information processing and computation tasks. The content of this course is theoretical, i.e., we will give an overview of various topics in quantum computation from a theoretical computer science perspective. We will first introduce the fundamental framework for quantum information processing and computation. Then, we will introduce topics in quantum algorithms, quantum information theory, and quantum cryptography. Enforced Prerequisite at Enrollment: MATH 220 and (MATH 318 or STAT 318 or MATH 414 or STAT 414 or MATH 418 or STAT 418)

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 467Factorization and Primality Testing3

Prime sieves, factoring, computer numeration systems, congruences, multiplicative functions, primitive roots, cryptography, quadratic residues. Students who have passed MATH 465 may not schedule this course. Enforced Prerequisite at Enrollment: CMPSC 360 or MATH 311W Cross-listed with: MATH 467 Bachelor of Arts: Quantification

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 469Formal Languages with Applications3

Regular, context free, recursive, and recursively enumerable languages; associated machine models; applications. CMPSC 469 Formal Languages with Applications (3) The primary goal of this course is to explore formal language theory, including regular, context free and recursively enumerable languages. Notations for specifying these languages (regular expressions, finite automata, context free grammars and turing machines) are emphasized. Applications of these languages, including pattern recognition, scanning, parsing, specification of programming language syntax and Unix shell programming, are also discussed. Study of these topics should provide a solid theoretical basis for students to draw on in studying diverse areas such as algorithm analysis, complexity theory and compiler construction. Enforced Prerequisite at Enrollment: CMPSC 360

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 470Compiler Construction3

Compiler design and implementation; scanning, parsing, semantic analysis, optimization (including static analysis), code generation, garbage collection, and error detection. CMPSC 470 Compiler Construction (3) The primary topics of this course are areas of compiler construction that are applicable both in building compilers and in many other areas of computer science. Both the concepts and the

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 471Introduction to Compiler Construction3

Design and implementation of compilers; lexical analysis, parsing, semantic actions, optimization, and code generation. Enforced Prerequisite at Enrollment: CMPSC 461

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 472Operating System Concepts3

Theoretical and practical issues of operating systems design and implementation, process management, concurrent programming, memory management, scheduling, I/O, and security. CMPSC 472CMPSC 472 Operating Systems Concepts (3)A course on operating systems is an essential part of a computer science education. This course is intended as an introduction to study the concepts, structure and mechanisms that underlie operating systems. A tremendous range and variety of computer systems exist for which operating systems are designed. Rather than focus on individual operating systems, this course discusses the key mechanisms of modern operating systems, the types of design trade-offs and decisions involved in operating system design and the context within which the operating system functions.After completing CMPSC 472 the student should be able to:(1) describe and understand the four major components of an operating system: process management (including synchronization, scheduling, mutual exclusion, deadlocks and concurrency), input/output (including disk scheduling and disk 1/0), memory management (including virtual memory, paging, segmentation and addressing) and management of the file systems(2) describe and understand how a centralized operating system functions(3) describe and understand the various components of an operating system(4) describe the various goals of protection and the security problem in general(5) compare centralized operating systems with distributed operating systemsStudents will be evaluated on homework (35% of grade), semester exams (35%), and a final comprehensive exam (30%).This course is required in the computer science (COMP) BS curriculum. It is intended for seniors to take this course in their fall semester. This course is also an admission requirement for the (COMP) MS program.No special facilities are required for this course. The software necessary is available in the computer labs or for students to use at home. This course will be offered once per year, with an expected enrollment of 80. Enforced Prerequisite at Enrollment: CMPSC 312 and (C or better in CMPSC 330) and CMPSC 462 and CMPSC 469 Undergraduate - The Pennsylvania State University 2026-2027 3929

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 473Operating Systems Design & Construction3

Design and implementation of computer operating systems; management of various system resources: processes, memory, processors, files, input/output devices. Enforced Prerequisite at Enrollment: CMPSC 311 and CMPEN 331

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 474Operating System & Systems Programming3

Select 7 credits from a school-approved list Proficiency demo by examination or coursework to the level of the 4 second semester in a world language is required. If fewer than 8 credits are needed to reach the required proficiency, students choose selections from a school-approved list to make a total of 8 credits. 3 Course requires a grade of C or better.

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 475Applications Programming3

Development of software for devices including smart phones, tablets, handheld units, and other general purpose computing platforms. Enforced Prerequisite at Enrollment: CMPSC 221 and (CMPSC 311 or CMPSC 312) and (CMPSC 462 or CMPSC 465)

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 476Systems Debugging3

Debugging is a practical and essential skill for any computer scientist to be able to properly diagnosis and fix problems (i.e., bugs) in systems and/or code. The goal of this course is for students to develop debugging skills through extensive practice. The course will cover general methodologies for debugging such as instrumentation, consistency checking, and divide & conquer. The course will also cover how to effectively utilize a variety of debugging tools such as debuggers, memory error detectors, race condition detectors, etc. Lastly, the course will explain specific types of bugs such as race conditions, deadlocks, and corrupted memory, which is necessary for finding these types of bugs. This is a project-based course that will involve extensive reading and writing of C code and use of Linux, so a solid background knowledge in C and Linux is expected. Enforced Prerequisite At Enrollment: CMPSC 311 or CMPSC 472 or CMPSC 474 or CMPEN 441

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 478Advanced Algorithms3

This course focuses on the theoretical study of algorithm design and analysis at an advanced undergraduate level. We will survey powerful algorithmic techniques including randomized algorithms, approximation algorithms, streaming algorithms, dynamic programming, algorithms in Machine Learning, Markov chains, and quantum algorithms. Enforced Prerequisite at Enrollment: CMPSC 465 Recommended Preparations: A grade of B or higher in CMPSC 465

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 483WSoftware Design Methods3

Applications of scientific knowledge and methods in the design and construction of computer software using engineering concepts. Enforced Prerequisite at Enrollment: CMPSC 311 and CMPSC 465; Recommended Preparation: ENGL 202C Writing Across the Curriculum

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 4842 Computing Elective3

Computing Elective or 3 Computer Science and 3 Computer Science and Science Elective

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 485WComputer Science Senior Project II3

Computer science capstone project with documentation emphasis. Enforced Prerequisite at Enrollment: CMPSC 484 Writing Across the Curriculum

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 487WSoftware Engineering and Design3

Software development process, life cycle; requirements analysis, specification, design, prototyping, testing, project management, and documentation. CMPSC 487W Software Engineering and Design (3) The primary goal of this course is to familiarize students with the wide variety of techniques and methodologies used in software engineering to assist in the development of large software systems. Issues discussed include the human factors involved in developing software, models of the software development process, the use of formal methods in software engineering, software validation and verification, and software maintenance.A second goal is to help students understand the importance of written communication in software engineering, and to provide opportunities for students to improve the quality of their writing - specifically in describing software systems. The primary means of accomplishing this goal is a semester long project in which students write requirements for a large software system. In writing these requirements, students describe the system for non-technical readers (clients and users) and specify it for technical readers (other system developers).A final goal is to emphasize the role of teams in software development. Modern software systems are simply too large to reasonably be produced by one person, so the ability to work as part of a team is vital. To support achieving this goal, techniques and tools for working in groups are discussed in the course, and students work on the semester project in teams.This course is a required course in the computer science (COMP) BS curriculum, and is intended to be taken by seniors as the capstone course for the major. As such, the course integrates material from many (potentially all) of the undergraduate computer science courses. This course is also available as an elective for students in the MS COMP program. Enforced Prerequisite at Enrollment: ENGL 202C and CMPSC 330 Writing Across the Curriculum

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 488Computer Science Project3

Project design and implementation with an emphasis on team work, documentation, and the employment and integration of computer science concepts. CMPSC 488 Computer Science Project (3) This class provides a hands-on experience designing and developing a real-world software n system. The course will emphasize collaboration and teamwork to employ and integrate computer science concepts. Students will work on a project that will serve as the capstone to the computer science degree program. Technical instruction, research, software implementation and delivered products will be required. Enforced Prerequisite at Enrollment: CMPSC 487W

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 489Deep Learning for Computer Vision3

Deep learning is a branch of machine learning which learns rich data representations simultaneously in the process of neural network optimization. Deep learning has greatly advanced state-of-the- art performance in computer vision, which covers a wide range of applications in our life, e.g., search, map, self-driving cars, etc. This course provides an introduction to deep learning with a focus on computer vision algorithms. This course first covers the details of typical deep neural network architectures for computer vision, such as fully- connected networks, convolutional neural networks, recurrent neural networks, transformers, generative models, deep reinforcement learning. The optimization algorithms, the data-efficient learning techniques and the practical strategies for training and fine-tuning deep neural networks in computer vision tasks will be introduced. It will also discuss deep learning applications in traditional computer vision problems and emerging topics, e.g. image classification, object detection, image segmentation, video classification, action detection, etc., and introduce the core concepts behind those deep learning based computer vision algorithms. In this course, students are expected to implement and train the deep neural networks, and gain a detailed understanding of the cutting-edge algorithms in various computer vision problems. Enforced Prerequisite at Enrollment: MATH 141 and (MATH 220 or MATH 430 or MATH 436) and (STAT 318 or STAT 319 or STAT 414 or STAT 415 or STAT 418 or EE 465) Recommended Preparations: Machine learning and Python programming language

Subject
CMPSC
Credits (min)
3
Credits (max)
3
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 492Foundations for Advanced Study in Computer
Subject
CMPSC
Type
course
Edition
graduate
Source
bulletins.psu.edu
CMPSC 494Senior Honors Thesis1-6

/Maximum of 6 Supervised Honors thesis research in computer science and engineering.

Subject
CMPSC
Credits (min)
1
Credits (max)
6
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 495Internship1-18

/Maximum of 18 Supervised off-campus, nongroup instruction including field experience, practica, or internships. Written and oral critique of activity required. Enforced Prerequisite at Enrollment: prior approval of proposed assignment by instructor

Subject
CMPSC
Credits (min)
1
Credits (max)
18
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 496Independent Studies1-18

/Maximum of 18 Creative projects, including research and design, which are supervised on an individual basis and which fall outside the scope of formal courses.

Subject
CMPSC
Credits (min)
1
Credits (max)
18
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 497Special Topics1-9

/Maximum of 9 Formal courses given infrequently to explore, in depth, a comparatively narrow subject which may be topical or of special interest.

Subject
CMPSC
Credits (min)
1
Credits (max)
9
Credit unit
Credits
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 499Foreign Studies1-12

EDSGN 499

Subject
CMPSC
Credits (min)
1
Credits (max)
12
Type
course
Edition
undergraduate
Source
bulletins.psu.edu
CMPSC 598Special Topics1-9

/Maximum of 9 Formal courses given infrequently to explore, in depth, a comparatively narrow subject that may be topical or of special interest; several differen topics may be taught in one year or semester. Graduate - The Pennsylvania State University 2026-2027 1029

Subject
CMPSC
Credits (min)
1
Credits (max)
9
Credit unit
Credits
Type
course
Edition
graduate
Source
bulletins.psu.edu

Source: Pennsylvania State University-Penn State Erie-Behrend College's catalog, linked per course · table learning_unit · CourseShelf publish 59