Purdue UniversityWebsiteAcademic Catalog
Computer ScienceDepartment Website
BS Degree in Computer Science: Computational Science & Engineeringsource 1source 2source 3
CS Courses
- Problem Solving And Object-Oriented ProgrammingCS 18000 (4)introCS 18000: Problem Solving And Object-Oriented Programming
Problem solving and algorithms, implementation of algorithms in a high level programming language, conditionals, the iterative approach and debugging, collections of data, searching and sorting, solving problems by decomposition, the object-oriented approach, subclasses of existing classes, handling exceptions that occur when the program is running, graphical user interfaces (GUIs), data stored in files, abstract data types, a glimpse at topics from other CS courses.
- Foundations Of Computer ScienceCS 18200 (3)introCS 18200: Foundations Of Computer Science
Logic and proofs; sets, functions, relations, sequences and summations; number representations; counting; fundamentals of the analysis of algorithms; graphs and trees; proof techniques; recursion; Boolean logic; finite state machines; pushdown automata; computability and undecidability.
- Programming In CCS 24000 (3)introCS 24000: Programming In C
The UNIX environment, C development cycle, data representation, operators, program structure, recursion, macros, C preprocessor, pointers and addresses, dynamic memory allocation, structures, unions, typedef, bit-fields, pointer/structure applications, UNIX file abstraction, file access, low-level I/O, concurrency.
- Computer ArchitectureCS 25000 (4)introCS 25000: Computer Architecture
Digital logic: transistors, gates, and combinatorial circuits; clocks; registers and register banks; arithmetic-logic units; data representation: big-endian and little-endian integers; ones and twos complement arithmetic; signed and unsigned values; Von-Neumann architecture and bottleneck; instruction sets; RISC and CISC designs; instruction pipelines and stalls; rearranging code; memory and address spaces; physical and virtual memory; interleaving; page tables; memory caches; bus architecture; polling and interrupts; DMA; device programming; assembly language; optimizations; parallelism; data pipelining.
- Data Structures And AlgorithmsCS 25100 (3)introCS 25100: Data Structures And Algorithms
Running time analysis of algorithms and their implementations, one-dimensional data structures, trees, heaps, additional sorting algorithms, binary search trees, hash tables, graphs, directed graphs, weighted graph algorithms, additional topics.
- Systems ProgrammingCS 25200 (4)sysCS 25200: Systems Programming
Low-level programming; review of addresses, pointers, memory layout, and data representation; text, data, and bss segments; debugging and hex dumps; concurrent execution with threads and processes; address spaces; file names; descriptors and file pointers; inheritance; system calls and library functions; standard I/O and string libraries; simplified socket programming; building tools to help programmers; make and make files; shell scripts and quoting; Unix tools including sed, echo, test, and find; scripting languages such as awk; version control; object and executable files (.o and a.out); symbol tables; pointers to functions; hierarchical directories; and DNS hierarchy; programming embedded systems.
- Sophomore Development Seminarornot (it's just strongly recommended)CS 29100 (1)specialCS 29100: Sophomore Development Seminar
Presentations by corporate partners about careers in computer science. Presentations by faculty about careers in academia and research. Students learn about upper-division courses, tour research laboratories, and attend job fairs.
- pick 2
Software Engineering ICS 30700 (3)softengCS 30700: Software Engineering IAn introduction to the methods and tools of software engineering; software life cycle; specification and design of software, software testing, cost and effort estimation; laboratory exercises with design, testing, and other tools.
Computer NetworksCS 42200 (3)sysCS 42200: Computer NetworksUndergraduate-level introduction to computer networks and data communication. Low-level details of media, signals, and bits: time division and frequency division multiplexing; encoding; modulation; bandwidth, throughput, and noise. Packet transmission: Local Area Network (Ethernet, FDDI) and Wide Area Network technologies (ATM); wireless networks; network interconnection with repeaters, bridges, and switches; DSU/CSU; xDSL and cable modems. Internetworking: router-based architecture; IP addressing; address binding with ARP; datagram encapsulation and fragmentation; UDP and TCP, retransmission; protocol ports; ICMP and error handling. Network applications: client/server concept; port demultiplexing; program interface to protocols (API); use by clients and servers; domain name system; TELNET; Web technologies including HTTP, CGI, Java; RPC and middleware; network management.
Programming LanguagesCS 45600 (3)plsCS 45600: Programming LanguagesConcepts for structuring data, computation, and whole programs. Object-oriented languages, functional languages, logic- and rule-based languages. Data types, type checking, exception handling, concurrent processes, synchronization, modularity, encapsulation, interfaces, separate compilation, inheritance, polymorphism, dynamic binding, subtyping, overloading, beta-reduction, unification.
Introduction To RoboticsCS 45800 (3)aiCS 45800: Introduction To RoboticsAny intelligent robot system interacting with our environment needs to have perception, planning, and control methods in its cognition process. The perception module outlines the robot’s procedures to gather and interpret sensory observations into world models. The underlying planning and control modules use those world models to plan robot behaviors and their interaction with our natural environments. Therefore, this course will cover the fundamental topics in robot perception, planning, and control to design general-purpose robot cognition algorithms. Overall, this course is divided into four modules: Robot perception: This covers fundamental techniques needed for robot localization and mapping from raw 3D sensory data. Robot planning: This module will discuss robot behavior planning techniques such as A*, RRT*, and trajectory optimization. Robot Control: This introduces basic control techniques such as PID controller to execute the robot’s planned behaviors in the real world. Robot Learning: This part will briefly introduce machine learning techniques for robot decision-making and control.
Introduction To Artificial IntelligenceCS 47100 (3)aiCS 47100: Introduction To Artificial IntelligenceStudents are expected to spend at least three hours per week gaining experience with artificial intelligence systems and developing software. Basic problem-solving strategies, heuristic search, problem reduction and AND/OR graphs, knowledge representation, expert systems, generating explanations, uncertainty reasoning, game playing, planning, machine learning, computer vision, and programming systems such as Lisp or Prolog.
Introduction To The Theory Of ComputationCS 48300 (3)theoryCS 48300: Introduction To The Theory Of ComputationTuring machines and the Church-Turing thesis; decidability; halting problem; reducibility; undecidable problems; decidability of logical theories; Kolmogorov complexity; time classes; P, NP, NP-complete; space classes; Savitch’s theorem, PSPACE-completeness, NL-completeness; hierarchy theorems; approximation theorems; probabilistic algorithms; applications of complexity to parallel computation and cryptography. Typically offered Fall Spring.
Numerical Linear AlgebraCS 51500 (3)mathCS 51500: Numerical Linear AlgebraDirect and iterative solvers of dense and sparse linear systems of equations, numerical schemes for handling symmetric algebraic eigenvalue problems, and the singular-value decomposition and its applications in linear least squares problems.
Computational Methods In OptimizationCS 52000 (3)mathCS 52000: Computational Methods In OptimizationA treatment of numerical algorithms and software for optimization problems with a secondary emphasis on linear and nonlinear systems of equations: unconstrained and constrained optimization; line search methods; trust region methods; Quasi-Newton methods; linear programming; calculating derivatives; quadratic programming; global optimization, including simulated annealing.
Parallel ComputingCS 52500 (3)sysCS 52500: Parallel ComputingParallel computing for science and engineering applications: parallel programming and performance evaluation, parallel libraries and problem-solving environments, models of parallel computing and run-time support systems, and selected applications.
Honors Real Analysis IMA 44000 (3)mathMA 44000: Honors Real Analysis IReal analysis in one and n-dimensional Euclidean spaces. Topics include the completeness property of real numbers, topology of Euclidean spaces, Heine-Borel theorem, convergence of sequences and series in Euclidean spaces, limit superior and limit inferior, Bolzano-Weierstrass theorem, continuity, uniform continuity, limits and uniform convergence of functions, Riemann or Riemann-Stieltjes integrals.
Design Of ExperimentsSTAT 51400 (3)mathSTAT 51400: Design Of ExperimentsFundamentals, completely randomized design; randomized complete blocks; latin square; multi-classification; factorial; nested factorial; incomplete block and fractional replications for 2n, 3n, 2m x 3n; confounding; lattice designs; general mixed factorials; split plot; analysis of variance in regression models; optimum design. Use of existing statistical programs.
- Compilers: Principles And PracticeorCS 35200 (3)plsCS 35200: Compilers: Principles And Practice
The theory and practice of programming language translation, compilation, and run-time systems, organized around a significant programming project to build a compiler for a simple but nontrivial programming language. Modules, interfaces, tools. Data structures for tree languages. Lexical analysis, syntax analysis, abstract syntax. Symbol tables, semantic analysis. Translation, intermediate code, basic blocks, traces. Instruction selection, CISC and RISC machines. Liveness analysis, graph coloring register allocation. Supplemental material drawn from garbage collection, object-oriented languages, higher-order languages, dataflow analysis, optimization, polymorphism, scheduling and pipelining, memory hierarchies.
Principles Of Concurrency And ParallelismorCS 35300 (3)sysCS 35300: Principles Of Concurrency And ParallelismImportant concepts, models, algorithms, abstractions, and implementation aspects of concurrent and parallel programs. Topics include: techniques used to describe concurrent programs (e.g., threads, events, co-routines, continuations), abstractions for shared-memory and message-passing programs, relaxed memory models, livelock and deadlock detection, lock-free algorithms, data races and atomicity, scheduling techniques, process calculi, and software transactions.
Operating SystemsCS 35400 (3)sysCS 35400: Operating SystemsIntroduction to operating systems. Computer system and operating system architectures, processes, inter-process communication, inter-process synchronization, mutual exclusion, deadlocks, memory hierarchy, virtual memory, CPU scheduling, file systems, I/O device management, security.
- Data Mining And Machine LearningorCS 37300 (3)aiCS 37300: Data Mining And Machine Learning
This course will introduce students to the field of data mining and machine learning, which sits at the interface between statistics and computer science. Data mining and machine learning focuses on developing algorithms to automatically discover patterns and learn models of large datasets. This course introduces students to the process and main techniques in data mining and machine learning, including exploratory data analysis, predictive modeling, descriptive modeling, and evaluation.
Web Information Search And ManagementorCS 47300 (3)sysCS 47300: Web Information Search And ManagementThis course teaches important concepts and knowledge of information retrieval for managing unstructured data such as text data on Web or in emails. At the same time, students will be exposed to a large number of important applications. Students in the course will get hands on experience from homework and a course project. The first part of the course focuses on general concepts/techniques such as stemming, indexing, vector space model, and feedback procedure. The second part of the course shows how to apply the set of techniques on different applications such as Web search, text categorization, and information recommendation.
Introduction To BioinformaticsorCS 47800 (3)scienceCS 47800: Introduction To BioinformaticsBioinformatics is broadly defined as the study of molecular biological information, targeting particularly the enormous volume of DNA sequence and functional complexity embedded in entire genomes. Topics will include understanding the evolutionary organization of genes (genomics), the structure and function of gene products (proteomics), and the dynamics of gene expression in biological processes (transcriptomics). Inherently, bioinformatics is interdisciplinary, melding various applications of computational science with biology. This jointly taught course introduces analytical methods from biology, statistics and computer science that are necessary for bioinformatics investigations. The course is intended for junior and senior undergraduates from various science backgrounds. Our objective is to develop the skills of both tool users and tool designers in this important new field of research.
Signals And SystemsorECE 30100 (3)engrECE 30100: Signals And SystemsClassification, analysis and design of systems in both the time- and frequency-domains. Continuous-time linear systems: Fourier Series, Fourier Transform, bilateral Laplace Transform. Discrete-time linear systems: difference equations, Discrete-Time Fourier Transform, bilateral Z-Transform. Sampling, quantization, and discrete-time processing of continuous-time signals. Discrete-time nonlinear systems: median-type filters, threshold decomposition. System design examples such as the compact disc player and AM radio.
- Introduction To The Analysis Of AlgorithmsCS 38100 (3)algsCS 38100: Introduction To The Analysis Of Algorithms
Techniques for analyzing the time and space requirements of algorithms. Application of these techniques to sorting, searching, pattern-matching, graph problems, and other selected problems. Brief introduction to the intractable (NP-hard) problems.
- Junior Resources Seminarornot (it's just strongly recommended)CS 39100 (1)impactCS 39100: Junior Resources Seminar
This seminar course engages a number of outside speakers who typically present information on the role of research in computer science, how the research components of computer science relate to each other, approaches to software development in industry, different types of application development paradigms, technological trends, and societal, ethical, and legal issues. The credit may be used only toward free electives.
Math/Stat Courses
- orPlane Analytic Geometry And Calculus IMA 16100 (5)mathMA 16100: Plane Analytic Geometry And Calculus I
Introduction to differential and integral calculus of one variable, with applications. Some schools or departments may allow only 4 credit hours toward graduation for this course. Designed for students who have not had at least a one-semester calculus course in high school, with a grade of “A” or “B”. Not open to students with credit in MA 16500. Demonstrated competence in college algebra and trigonometry.
Plane Analytic Geometry And Calculus IIMA 16200 (5)mathMA 16200: Plane Analytic Geometry And Calculus IIContinuation of MA 16100. Vectors in two and three dimensions, techniques of integration, infinite series, conic sections, polar coordinates, surfaces in three dimensions. Some schools or departments may allow only 4 credit hours toward graduation for this course.
Analytic Geometry And Calculus IMA 16500 (4)mathMA 16500: Analytic Geometry And Calculus IIntroduction to differential and integral calculus of one variable, with applications. Conic sections. Designed for students who have had at least a one-semester calculus course in high school, with a grade of “A” or “B”, but are not qualified to enter MA 16200 or MA 16600 or the advanced placement courses MA 17300 or the honors calculus course MA 18100. Demonstrated competence in college algebra and trigonometry.
- orHonors Multivariate CalculusMA 27101 (5)mathMA 27101: Honors Multivariate Calculus
This course is the Honors version of MA 26100, Multivariate Calculus; it will also include a review of infinite series. The course is intended for first-year students who have credit for Calculus I and II. There will be a significant emphasis on conceptual explanation, but not on formal proof. Permission of department is required.
- Linear AlgebraorMA 26500 (3)mathMA 26500: Linear Algebra
Introduction to linear algebra. Systems of linear equations, matrix algebra, vector spaces, determinants, eigenvalues and eigenvectors, diagonalization of matrices, applications. Not open to students with credit in MA 26200, 27200, 35000 or 35100.
- Ordinary Differential EquationsorMA 26600 (3)mathMA 26600: Ordinary Differential Equations
First order equations, second and n’th order linear equations, series solutions, solution by Laplace transform, systems of linear equations. It is preferable but not required to take MA 26500 either first or concurrently. Not open to students with credit in MA 26200, 27200, 36000, 36100, or 36600.
Ordinary Differential EquationsMA 36600 (4)mathMA 36600: Ordinary Differential EquationsAn introduction to ordinary differential equations with emphasis on problem solving and applications. The one-hour computer lab will give students an opportunity for hands-on experience with both the theory and applications of the subject.