Skip Navigation
search: People Opens New Window | Departments Opens New Window | Penn State Opens New Window | Web Opens New Window
Penn State mark
Penn State mark

University Bulletin

Undergraduate Degree Programs

Computer Science (CMPSC)

CMPSC 097 Special Topics (1-9) Formal courses given infrequently to explore, in depth, a comparatively narrow subject which may be topical or of special interest.
Effective: Spring 2008
 

CMPSC 100 Computer Fundamentals and Applications (3) Introduction to computer fundamentals and applications to data processing environments.
Effective: Spring 1995
Prerequisite: 2 entrance units in mathematics  

CMPSC 101 (GQ) Introduction to C++ Programming (3) Properties of algorithms, languages, and notations for describing algorithms, applications of a procedure-oriented language to problem solving. A student may receive credit for only one of the following courses: CMPSC 101, 200, 201, 202, 121.
Effective: Fall 2010
Prerequisite: 2 entrance units in mathematics  

CMPSC 102 Introduction to Visual Programming (3) Problem solving for non-majors; high-level language programming; controlstructures, functions, parameters, recursion, arrays, records/ structures; verification; debugging; documentation.
Effective: Fall 2013
Prerequisite: 2 entrance units in mathematics  

CMPSC 109 Introduction to Data Processing with COBOL (3) Study of the COBOL programming language and its applications in industry.
Effective: Spring 2008
Prerequisite: 3 credits of programming  

CMPSC 111S Logic for Computer Science (1) An introduction to logic and its application to problem solving and computer science.
Effective: Spring 2009
 

CMPSC 121 (GQ) Introduction to Programming Techniques (3) Design and implementation of algorithms. Structured programming. Problem solving techniques. Introduction to a high-level language, including arrays, procedures, and recursion.
Effective: Fall 2010
Prerequisite: MATH 110 or prerequisite or concurrentMATH 140  

CMPSC 122 Intermediate Programming (3) 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.
Effective: Spring 2008
Prerequisite: CMPSC 121  

CMPSC 197 Special Topics (1-9) Formal courses given infrequently to explore, in depth, a comparatively narrow subject which may be topical or of special interest.
Effective: Spring 2008
 

CMPSC 199 (IL) Foreign Studies (1-12) Courses offered in foreign countries by individual or group instruction.
Effective: Summer 2005
 

CMPSC 200 (GQ) Programming for Engineers with MATLAB (3) Development and implementation of algorithms in a procedure-oriented language, with emphasis on numerical methods for engineering problems. A student may receive credit for only one of the following courses: CMPSC 101, 102, 200, 201, or 202.
Effective: Spring 2008
Prerequisite: MATH 140   Concurrent: MATH 141

CMPSC 201 (GQ) Programming for Engineers with C++ (3) Development and implementation of algorithms in a procedure-oriented language, with emphasis on numerical methods for engineering problems. A student may receive credit for only one of the following courses: CMPSC 101, 102, 200, 201, or 202.
Effective: Spring 2008
Prerequisite: MATH 140   Concurrent: MATH 141

CMPSC 202 (GQ) Programming for Engineers with FORTRAN (3) Development and implementation of algorithms in a procedure-oriented language, with emphasis on numerical methods for engineering problems. A student may receive credit for only one of the following courses: CMPSC 101, 102, 200, 201, or 202.
Effective: Spring 2008
Prerequisite: MATH 140   Concurrent: MATH 141

CMPSC 203 (GQ) Introduction to Spreadsheets and Databases (4) Design, use, and programming of spreadsheets and data bases with applications from a range of disciplines.
Effective: Spring 2008
Prerequisite: 2 entrance units in mathematics  

CMPSC 208 (GQ) Technical Game Development (3) Introduction to the tools and techniques required to implement games in a virtual environment.
Effective: Summer 2013 Ending: Fall 2014
Prerequisite: MATH 021  

CMPSC 208 (GQ) (GAME 250) Technical Game Development (3) Introduction to the tools and techniques required to implement games in a virtual environment.
Effective: Spring 2015 Future: Spring 2015
Prerequisite: MATH 021  

CMPSC 221 Object Oriented Programming with Web-Based Applications (3) This course will continue with object-oriented programming and will introduce graphics, virtual machines, programming language concepts and web-based programming using Java.
Effective: Spring 2008
Prerequisite: CMPSC 122  

CMPSC 295 Internship (1-18) Supervised off-campus, nongroup instruction including field experiences, practica, or internships. Written and oral critique of activity required.
Effective: Spring 2008
Prerequisite: prior approval of proposed assignment by instructor  

CMPSC 296 Independent Studies (1-18) Creative projects, including research and design, which are supervised on an individual basis and which fall outside the scope of formal courses.
Effective: Spring 2008
 

CMPSC 297 Special Topics (1-9) Formal courses given infrequently to explore, in depth, a comparatively narrow subject which may be topical or of special interest.
Effective: Spring 2008
 

CMPSC 297A Developing .NET Solutions With Visual Basic.NET (1) Students will learn the basic of the VB.NET programming language. Topics include the .NET Framework, understanding the VB.NET language and syntax, an introduction to Object-Oriented Design and Programming for VB.NET, Windows Forms, and debugging and deploying VB.NET applications.
Effective: Fall 2014 Ending: Fall 2014
 

CMPSC 297B Developing .NET Solutions with C# (1) Learn the basics of the C# programming language. Topics include the .NET Framework, understanding the C# langauge and syntax, an introduction to Object-Oriented Design and Programming for C#, Windowns Forms, and debugging and deploying C# applications.
Effective: Fall 2014 Ending: Fall 2014
 

CMPSC 299 (IL) Foreign Studies (1-12) Courses offered in foreign countries by individual or group instruction.
Effective: Spring 2008
 

CMPSC 302 Intermediate Visual Programming (3) OO programming, visual programming, classes, objects, ADTs, inheritance, recursion, regular expressions, user-defined controls, documentation, testing, verification, productivity tools.
Effective: Fall 2013
Prerequisite: CMPSC 102 orCMPSC 121  

CMPSC 311 Introduction to Systems Programming (3) Unix system programming in C; organization of programs and data; program analysis and support tools; software standards; common system functions.
Effective: Spring 2008
Prerequisite: CMPSC 221  

CMPSC 312 Computer Organization and Architecture (3) Data representation, digital logic, instruction set/control logic, machine/ assembly languages, advanced architectures, memory hierarchy, I/O devices, overall system design.
Effective: Spring 2008
Prerequisite: CMPSC 121 or equivalent  

CMPSC 313 Assembly Language Programming (3) Program design, addressing modes, subroutines, parameter passing, stacks, bit manipulation, text processing, DOS functions, macros, I/O, high level language interfaces.
Effective: Spring 2008
Prerequisite: CMPSC 312  

CMPSC 335 Fundamentals of Communication Networks (3) Introduction to the composition of communciation networks, including trans- mission mediums and protocols, transfer methods, topologies and software, and communications hardware.
Effective: Spring 2008
Prerequisite: 3 credits of programming  

CMPSC 360 Discrete Mathematics for Computer Science (3) Discrete mathematics and foundations for modern computer science. Topics include sets, relations, logic, algorithms, graphs, finite state machines and regular expressions.
Effective: Spring 2008
  Concurrent: CMPSC 122

CMPSC 395 Internship (1-18) Supervised off-campus, nongroup instruction including field experiences, practica, or internships. Written and oral critique of activity required.
Effective: Spring 2013
 

CMPSC 397 Special Topics (1-9) Formal courses given infrequently to explore, in depth, a comparatively narrow subject which may be topical or of special interest.
Effective: Spring 2008
 

CMPSC 399 (IL) Foreign Studies (1-12) Courses offered in foreign countries by individual or group instruction.
Effective: Summer 2005
 

CMPSC 402 UNIX and C (3) UNIX OS including file system, utilities, and shell scripting; C programming, including I/O, pointers, arrays, dynamic memory, macros, and libraries.
Effective: Fall 2010
Prerequisite: CMPSC 121  

CMPSC 412 Data Structures Lab (1.5) Programming with common data structures; recursion; stacks, queues, dictionaries, priority queues; string searching and manipulation; sorting; trees; combinatorics.
Effective: Spring 2013
  Concurrent: CMPSC 462 or CMPSC 465

CMPSC 413 Algorithms Lab (1.5) Programming with common algorithm design techniques; divide and conquer, greedy method, dynamic programming, and tree and graphy traversals.
Effective: Summer 2013
  Concurrent: CMPSC 463

CMPSC 421 Net-centric Computing (3) This course introduces JavaScript and AJAX for creating Rich Internet Applications, and XML for client-server communication and Web Services.
Effective: Spring 2011
Prerequisite: CMPSC 221 orSWENG 311  

CMPSC 426 Object-oriented Design (3) Object-oriented analysis and design; design patterns such as creational, structural, and behavioral patterns; UML; and unified process.
Effective: Spring 2014
Prerequisite: CMPSC 221, CMPSC 462  

CMPSC 428 Programming in Ada (3) Structured program design using Ada; strong typing, data abstraction, packages, subprograms, separate compilation, visibility, exceptions, generic units.
Effective: Fall 2010
Prerequisite: CMPSC 121  

CMPSC 430 Database Design (3) Relational database model, query languages, integrity, reliability, normal forms for design.
Effective: Fall 2010
Prerequisite: CMPSC 462  

CMPSC 431W Database Management Systems (3) Topics include: conceptual data modeling, relational data model, relational query languages, schema normalization, database/Internet applications, and database system issues.
Effective: Fall 2013
Prerequisite: CMPSC 221;ENGL 202C  

CMPSC 436 Communications and Networking (3) Data transmission, basic signaling, data encoding, error control, communication protocols, security, network topologies, routing, switching, internetworking, emerging high speed networks.
Effective: Spring 2008
Prerequisite: CMPSC 312  

CMPSC 438 Computer Network Architecture and Programming (3) Network architectures, communication protocols, internetworking, network security, client-server computing, web application development, programming with APIs.
Effective: Spring 2014
Prerequisite: CMPSC 221, CMPSC 312  

CMPSC 441 Artificial Intelligence (3) Problem solving, search techniques including local search and genetic algorithms, knowledge representation, planning, learning, and neural networks.
Effective: Spring 2014
Prerequisite: CMPSC 122, CMPSC 360  

CMPSC 442 Artificial Intelligence (3) Introduction to the theory, research paradigms, implementation techniques, and philosophies of artificial intelligence.
Effective: Spring 2008
Prerequisite: CMPSC 122 or equivalent   Concurrent: CMPSC 465

CMPSC 443 Introduction to Computer and Network Security (3) Introduction to theory and practice of computer security with an emphasis on Internet and operating system applications.
Effective: Spring 2008
Prerequisite: CMPSC 473, CMPEN 362  

CMPSC 444 Secure Programming (3) Secure software design principles/practice, common threats, applied cryptography, trust management, input validation, OS-/programming language- specific issues, software validation.
Effective: Spring 2014
Prerequisite: CMPSC 221   Concurrent: CMPSC 430 or CMPSC 431 or CMPSC 421W

CMPSC 448 Machine Learning and Algorithmic AI (3) Evaluation and use of machine learning models; algorithmic elements of artificial intelligence.
Effective: Spring 2013
Prerequisite: STAT 319 orSTAT 415 andCMPSC 122 or prior programming experience  

CMPSC 450 Concurrent Scientific Programming (3) Problems of synchronization, concurrent execution, and their solution techniques. Design and implementation of concurrent software in a distributed system.
Effective: Spring 2008
Prerequisite: CMPSC 121, CMPSC 201 orCMPSC 202;MATH 220;MATH 230 orMATH 231  

CMPSC 451 (MATH 451) Numerical Computations (3) 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 CSE/MATH 451 and CSE/MATH 455.
Effective: Spring 2008
Prerequisite: 3 credits of programming;MATH 230 orMATH 231  

CMPSC 452 Numerical Analysis (3) Algorithm efficiency and accuracy, function interpolation and polynomial approximation, numerical differentiation and integration, initial-value problems, and approximation of eigenvalues.
Effective: Fall 2010
Prerequisite: MATH 220  

CMPSC 455 (MATH 455) Introduction to Numerical Analysis I (3) Floating point computation, numerical rootfinding, interpolation, numerical quadrature, direct methods for linear systems. Students may take only one course for credit from CMPSC (MATH) 451 and CMPSC (MATH) 455.
Effective: Spring 2008
Prerequisite: MATH 220;MATH 230 orMATH 231 ; and 3 credits of programming  

CMPSC 456 (MATH 456) Introduction to Numerical Analysis II (3) Polynomials and piecewise polynomial approximation; matrix least square problems; numerical solution of eigenvalue problems; numerical solutions of ordinary differential equations.
Effective: Spring 2008
Prerequisite: CMPSC 455  

CMPSC 457 Computer Graphics Algorithms (3) Graphics systems/hardware, color models, transformations, projections, clipping, hidden line/surface removal, aliasing, parametric curves/surfaces, 3D modeling animation.
Effective: Fall 2010
Prerequisite: CMPSC 122;MATH 220  

CMPSC 458 Fundamentals of Computer Graphics (3) Fundamentals of computer graphics: input/output devices, transformation, projection, clipping, hidden line/surface elimination.
Effective: Spring 2008
Prerequisite: CMPSC 311;MATH 220;MATH 230 orMATH 231  

CMPSC 459 Scientific Visualization (3) Visualization techniques for data analysis and presentation. Applying visualization and perceptual theory. Using extending platform independent visualization software.
Effective: Spring 2008
Prerequisite: CMPSC 122  

CMPSC 460 Principles of Programming Languages (3) Design and implementation of high level programming languages and survey of language paradigms including imperative, functional, and object-oriented programming.
Effective: Spring 2014
Prerequisite: CMPSC 312;CMPSC 462   Concurrent: CMPSC 469

CMPSC 461 Programming Language Concepts (3) Fundamental concepts of programming language design, specifications, and implementation; programming language paradigms and features; program verification.
Effective: Spring 2008
Prerequisite: CMPSC 221;CMPSC 360  

CMPSC 462 Data Structures (3) In-depth theoretical study of data structures such as balanced trees, hash tables, priority queues, B-trees, binomial heaps, and Fibonacci heaps.
Effective: Spring 2014
Prerequisite: CMPSC 360  

CMPSC 463 Design and Analysis of Algorithms (3) Recurrences, algorithms design techniques, searching, sorting, selection, graph algorithms, NP-completeness, approximation algorithms, local optimization algorithms.
Effective: Spring 2014
Prerequisite: CMPSC 462   Concurrent: MATH 318 STAT 301 or STAT 318

CMPSC 464 Introduction to the Theory of Computation (3) Computability/Complexity: finite automata, regular & context-free languages, Turing machines, Church-Turing Thesis, undecidability, reducibility, completeness, time/space complexity, P versus NP.
Effective: Fall 2009
Prerequisite: CMPSC 465  

CMPSC 465 Data Structures and Algorithms (3) Fundamental concepts of computer science: data structures, analysis of algorithms, recursion, trees, sets, graphs, sorting.
Effective: Fall 2012
Prerequisite: CMPSC 122;CMPSC 360 orMATH 311W  

CMPSC 467 (MATH 467) Factorization and Primality Testing (3) 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.
Effective: Spring 2008
Prerequisite: CMPSC 360 orMATH 311W  

CMPSC 469 Formal Languages with Applications (3) Regular, context free, recursive, and recursively enumerable languages; associated machine models; applications.
Effective: Spring 2014
Prerequisite: CMPSC 360  

CMPSC 470 Compiler Construction (3) Compiler design and implementation; scanning, parsing, semantic analysis, optimization (including static analysis), code generation, garbage collection, and error detection.
Effective: Spring 2014
Prerequisite: CMPSC 221, CMPSC 312, CMPSC 462, CMPSC 469  

CMPSC 471 Introduction to Compiler Construction (3) Design and implementation of compilers; lexical analysis, parsing, semantic actions, optimization, and code generation.
Effective: Spring 2008
Prerequisite: CMPSC 461  

CMPSC 472 Operating System Concepts (3) Theoretical and practical issues of operating systems design and implementation, process management, concurrent programming, memory management, scheduling, I/O, and security.
Effective: Fall 2010
Prerequisite: CMPSC 312;CMPSC 462  

CMPSC 473 Operating Systems Design & Construction (3) Design and implementation of computer operating systems; management of various system resources: processes, memory, processors, files, input/output devices.
Effective: Spring 2008
Prerequisite: CMPSC 311;CMPEN 331  

CMPSC 474 Operating System & Systems Programming (3) Operating Systems overview and principles; processes and signals; concurrency and synchronization; memory and file management; client-server computing; scripts; systems-programming.
Effective: Spring 2008
Prerequisite: CMPSC 122;CMPSC 312  

CMPSC 475 Applications Programming (3) Development of software for devices including smart phones, tablets, handheld units, and other general purpose computing platforms.
Effective: Spring 2014
Prerequisite: CMPSC 221;CMPSC 311 orCMPSC 312;CMPSC 462 orCMPSC 465  

CMPSC 479 Language Translation (3) Design and implementation of compilers, lexical analysis, syntax/semantic analysis, optimization, and code generation.
Effective: Spring 2008
Prerequisite: CMPSC 465  

CMPSC 483W Software Design Methods (3) Applications of scientific knowledge and methods in the design and construction of computer software using engineering concepts.
Effective: Spring 2008
Prerequisite: CMPSC 221;CMPSC 465;ENGL 202C  

CMPSC 484 Computer Science Senior Project I (2) Computer science capstone project with documentation emphasis.
Effective: Spring 2008
Prerequisite: ENGL 202C;CMPSC 221;CMPSC 465  

CMPSC 485W Computer Science Senior Project II (3) Computer science capstone project with documentation emphasis.
Effective: Spring 2008
Prerequisite: CMPSC 484  

CMPSC 487W Software Engineering and Design (3) Software development process, life cycle; requirements analysis, specification, design, prototyping, testing, project management, and documentation.
Effective: Spring 2014
Prerequisite: ENGL 202C, CMPSC 221, CMPSC 462  

CMPSC 488 Computer Science Project (3) Project design and implementation with an emphasis on team work, documentation, and the employment and integration of computer science concepts.
Effective: Summer 2013
Prerequisite: CMPSC 487W  

CMPSC 494H Senior Honors Thesis (1-6) Supervised Honors thesis research in computer science and engineering.
Effective: Spring 2008
Prerequisite: approval of a thesis adviser in the department  

CMPSC 495 Internship (1-18) Supervised off-campus, nongroup instruction including field experience, practica, or internships. Written and oral critique of activity required.
Effective: Spring 2008
Prerequisite: prior approval of proposed assignment by instructor  

CMPSC 496 Independent Studies (1-18) Creative projects, including research and design, which are supervised on an individual basis and which fall outside the scope of formal courses.
Effective: Spring 2008
 

CMPSC 496A Oculus VR Motion Sickness as Mediated by Latency of Display (1-6) Student will assist in development and evaluation of 30 visualization for custom hardware. Effects on motion sickness are to be evaluated.
Effective: Fall 2014 Ending: Fall 2014
 

CMPSC 497 Special Topics (1-9) Formal courses given infrequently to explore, in depth, a comparatively narrow subject which may be topical or of special interest.
Effective: Spring 2008
 

CMPSC 497A Game Development with HTML 5 (3) Game design of 2D assets using HTML 5, with the specific intention of creating games for mobile applications.
Effective: Fall 2014 Ending: Fall 2014
Prerequisite: CMPSC 121  

CMPSC 497A Contest Programming (1) Programming Contest Questions; Common Data Structures; Strings; Combinatorics; Number Theory; Backtracking; Graph Traversal; Graph Algorithms; Dynamic Programming.
Effective: Spring 2015 Ending: Spring 2015 Future: Spring 2015
  Concurrent: CMPSC 221

CMPSC 497B Big Data Analytics (3) The ease of large-scale data collection is driving commerical interest in distributed processing algorithms for performing various analytic tasks. In this course we will take an in-depth look at MapReduce (and related programming models) with applications to processing text data such as Tweets and also an emphasis on graph data. The course will be graded based on projects, class participation, and exams.
Effective: Fall 2014 Ending: Fall 2014
Prerequisite: CMPSC 221  

CMPSC 497C Cyber Security Contest Problem Practice (1-6) Students will learn about common offensive and defensive cyber security strategies. They will apply these strategeis to solve scenarios created by the instructor.
Effective: Fall 2014 Ending: Fall 2014
Prerequisite: CMPSC 122  

CMPSC 497D Hands-on Experience on Programming Manycores (3) This course focuses on programming emerging manycore architectures. Specifically, we will focus on Intel Xeon Phi and NVIDIA Kepler, and the students will optimize (in a collaborative fashion) two large scale parallel applications from the parallelism, data locality and energy angles.
Effective: Fall 2014 Ending: Fall 2014
Prerequisite: CMPSC 461  

CMPSC 497F Introduction to Bioinformatics (3) This course will introduce the biological problems and computational solutions that motivate computational biology. Topics will be organized around the three mail themes: 1) Genomes, including assembly and annotation of genomic sequences; 2) Evolution, including reconstructing evolutionary relationships, personal genomics, and detecting disease associated traits; and 3) Function, including analysis of functional genomics experimental assays and regulatory relationships between genes. We welcome participation from students majoring in BMB, CMPSC, and other disciplines, and therefore lecture material will not assume prior knowledge of biological or computational topics.
Effective: Fall 2014 Ending: Fall 2014
 

CMPSC 498 Special Topics (1-9) Formal courses given infrequently to explore, in depth, a comparatively narrow subject that may be topical or of special interest.
Effective: Spring 2008
 

CMPSC 499 (IL) Foreign Studies (1-12) Courses offered in foreign countries by individual or group instruction.
Effective: Summer 2005
 

Last Import from UCM: September 20, 2014 3:00 AM