Case Western Reserve UniversityWebsiteAcademic Catalog
Computer and Data SciencesDepartment Website
BS Degree in Computer Sciencesource 1source 2source 3ABET
CS Courses
- Programming in JavaCSDS 132 (3)introCSDS 132: Programming in Java
An in-depth survey of modern programming language features, computer programming and algorithmic problem solving with an emphasis on the Java language. Computers and code compilation; conditional statements, subprograms, loops, methods; object-oriented design, inheritance and polymorphism, abstract classes and interfaces; types, type systems, generic types, abstract data types, strings, arrays, linked lists; software development, modular code design, unit testing; strings, text and file I/O; GUI components, GUI event handling; threads; comparison of Java to C, C++, and C#. Offered as CSDS 132 and ECSE 132.
- Introduction to Data StructuresCSDS 233 (4)introCSDS 233: Introduction to Data Structures
Different representations of data: lists, stacks and queues, trees, graphs, and files. Manipulation of data: searching and sorting, hashing, recursion and higher order functions. Abstract data types, templating, and the separation of interface and implementation. Introduction to asymptotic analysis. The Java language is used to illustrate the concepts and as an implementation vehicle throughout the course. Offered as CSDS 233 and ECSE 233.
- Logic Design and Computer OrganizationCSDS 281 (4)sysCSDS 281: Logic Design and Computer Organization
Fundamentals of digital systems in terms of both computer organization and logic level design. Organization of digital computers; information representation; boolean algebra; analysis and synthesis of combinational and sequential circuits; datapaths and register transfers; instruction sets and assembly language; input/output and communication; memory.
- Discrete MathematicsCSDS 302 (3)mathCSDS 302: Discrete Mathematics
A general introduction to basic mathematical terminology and the techniques of abstract mathematics in the context of discrete mathematics. Topics introduced are mathematical reasoning, Boolean connectives, deduction, mathematical induction, sets, functions and relations, algorithms, graphs, combinatorial reasoning. Offered as CSDS 302, ECSE 302 and MATH 304.
- AlgorithmsCSDS 310 (3)algsCSDS 310: Algorithms
The course covers fundamentals in algorithm design and analysis and provides practice in professional algorithm writing and presentations. Loop invariants, asymptotic notation, recurrence relations, sorting algorithms, divide-and-conquer, dynamic programming, greedy algorithms, basic graph algorithms. Offered as CSDS 310 and CSDS 310N. Counts as a Disciplinary Communication course.
- pick 2
Introduction to Data Science SystemsCSDS 312 (3)sysCSDS 312: Introduction to Data Science SystemsAn introduction to the software and hardware architecture of data science systems, with an emphasis on Operating Systems and Computer Architecture that are relevant to Data Sciences systems. At the end of the course, the student should understand the principles and architecture of storage systems, file systems (especially, HDFS), memory hierarchy, and GPU. The student should have carried out projects in these areas, and should be able to critically compare various design decisions in terms of capability and performance.
Computer ArchitectureCSDS 314 (3)sysCSDS 314: Computer ArchitectureThis course provides students the opportunity to study and evaluate a modern computer architecture design. The course covers topics in fundamentals of computer design, performance, cost, instruction set design, processor implementation, control unit, pipelining, communication and network, memory hierarchy, computer arithmetic, input-output, and an introduction to RISC and super-scalar processors. Offered as CSDS 314 and ECSE 314.
Computer Networks ICSDS 325 (3)sysCSDS 325: Computer Networks IAn introduction to computer networks and the Internet. Applications: http, ftp, e-mail, DNS, socket programming. Transport: UDP, TCP, reliable data transfer, and congestion control. Network layer: IP, routing, and NAT. Link layer: taxonomy, Ethernet, 802.11. Offered as CSDS 325 and CSDS 325N.
Intro to Operating Systems and Concurrent ProgrammingCSDS 338 (4)sysCSDS 338: Intro to Operating Systems and Concurrent ProgrammingIntro to OS: OS Structures, processes, threads, CPU scheduling, deadlocks, memory management, file system implementations, virtual machines, cloud computing. Concurrent programming: fork, join, concurrent statement, critical section problem, safety and liveness properties of concurrent programs, process synchronization algorithms, semaphores, monitors. UNIX systems programming: system calls, UNIX System V IPCs, threads, RPCs, shell programming. Offered as CSDS 338, ECSE, 338, CSDS 338N and ECSE 338N.
- pick 2
Introduction to Data AnalysisCSDS 313 (3)mathCSDS 313: Introduction to Data AnalysisThis course provides a conceptual and hands-on introduction to reasoning with data. Introduction of basic statistical concepts; models vs. observations, common distributions, parameters vs. statistics, statistical inference, hypothesis testing, multiple hypotheses, confidence intervals. Use of computational approaches to address statistical problems; data representation, empirical assessment of statistical significance, assessment of the association between variables, dimensionality reduction, model building, evaluation, and validation. Data visualization and accessibility/interpretability of patterns in data and predictive models. Computational thinking and critical approaches in data science; common mistakes and issues in data analysis, causality vs. correlation, confounders, statistical artifacts, Simpson's paradox, base rate fallacy, stage migration, survivorship bias, censoring, misleading visualization. Offered as CSDS 313 and CSDS 413.
Data Mining for Big DataCSDS 335 (3)aiCSDS 335: Data Mining for Big DataWith the unprecedented rate at which data is being collected today in almost all fields of human endeavor, there is an emerging economic and scientific need to extract useful information from it. Data mining is the process of automatic discovery of patterns, changes, associations and anomalies in massive databases, and is a highly interdisciplinary field representing the confluence of several disciplines, including database systems, data warehousing, machine learning, statistics, algorithms, data visualization, and high-performance computing. This course is an introduction to the commonly used data mining techniques.
Introduction to Machine LearningCSDS 340 (3)aiCSDS 340: Introduction to Machine LearningMachine learning is a sub-field of Artificial Intelligence that is concerned with the design and analysis of algorithms that 'learn' and improve with experience. This course is an introduction to algorithms for machine learning and their implementation in the context of big data.
- pick 2
Compiler DesignCSDS 337 (4)plsCSDS 337: Compiler DesignDesign and implementation of compilers and other language processors. Scanners and lexical analysis; regular expressions and finite automata; scanner generators; parsers and syntax analysis; context free grammars; parser generators; semantic analysis; intermediate code generation; runtime environments; code generation; machine independent optimizations; data flow and dependence analysis. There will be a significant programming project involving the use of compiler tools and software development tools and techniques. Offered as CSDS 337 and ECSE 337.
Computer SecurityCSDS 344 (3)sysCSDS 344: Computer SecurityGeneral types of security attacks; approaches to prevention; secret key and public key cryptography; message authentication and hash functions; digital signatures and authentication protocols; information gathering; password cracking; spoofing; session hijacking; denial of service attacks; buffer overruns; viruses, worms, etc., principles of secure software design, threat modeling; access control; least privilege; storing secrets; socket security; firewalls; intrusions; auditing; mobile security.
Programming Language ConceptsCSDS 345 (3)plsCSDS 345: Programming Language ConceptsThis course examines the four main programming paradigms: imperative, object-oriented, functional, and logical. It is assumed that students will come to the course with significant exposure to object-oriented programming and some exposure to imperative programming. The course will teach the functional paradigm in depth, enhance the students' knowledge of the object-oriented and imperative paradigms, and introduce the logical paradigm. The course will explore language syntax, semantics, names/scopes, types, expressions, assignment, subprograms, abstraction and inheritance. This exploration will have several forms. Students will study the programming language concepts at a theoretical level, use the concepts in functional language programming, and implement the concepts by designing language interpreters.
- pick 2
Introduction to Database SystemsCSDS 341 (3)sysCSDS 341: Introduction to Database SystemsRelational model, ER model, relational algebra and calculus, SQL, OBE, security, views, files and physical database structures, query processing and query optimization, normalization theory, concurrency control, object relational systems, multimedia databases, Oracle SQL server, Microsoft SQL server.
Data PrivacyCSDS 356 (3)impactCSDS 356: Data PrivacyIntroduction to privacy, economics and incentives, crypto-based solution for privacy, hiding data from the database user, hiding access patterns from the database owner, anonymous routing and TOR, privacy in online social networks, privacy in cellular and Wi-Fi networks, location privacy, privacy in e-cash systems, privacy in e-voting, genomic privacy.
Advanced Game Development ProjectCSDS 390 (3)capstoneCSDS 390: Advanced Game Development ProjectThis game development project course will bring together an inter-professional group of students in the fields of engineering, computer science, and art to focus on the design and development of a complete, fully functioning computer game as an interdisciplinary team.
Software EngineeringCSDS 393 (3)softengCSDS 393: Software EngineeringTopics: Introduction to software engineering; software lifecycle models; development team organization and project management; requirements analysis and specification techniques; software design techniques; programming practices; software validation techniques; software maintenance practices; software engineering ethics. Undergraduates work in teams to complete a significant software development project. Graduate students are required to complete a research project.
- Secure Computing RequirementComputer SecurityorCSDS 344 (3)sysCSDS 344: Computer Security
General types of security attacks; approaches to prevention; secret key and public key cryptography; message authentication and hash functions; digital signatures and authentication protocols; information gathering; password cracking; spoofing; session hijacking; denial of service attacks; buffer overruns; viruses, worms, etc., principles of secure software design, threat modeling; access control; least privilege; storing secrets; socket security; firewalls; intrusions; auditing; mobile security.
Data PrivacyorCSDS 356 (3)impactCSDS 356: Data PrivacyIntroduction to privacy, economics and incentives, crypto-based solution for privacy, hiding data from the database user, hiding access patterns from the database owner, anonymous routing and TOR, privacy in online social networks, privacy in cellular and Wi-Fi networks, location privacy, privacy in e-cash systems, privacy in e-voting, genomic privacy.
Internet Security and PrivacyorCSDS 427 (3)sysCSDS 427: Internet Security and PrivacyThis course introduces students to research on Internet security and privacy. Covered topics include denial of service attacks, attacks enabled by man-in-the-middle surveillance, communication hijacking, botnet and fast-flux networks, email and Web spam, threats to privacy on the Internet, and Internet censorship. The course will be based on a collection of research papers. Students will be required to attend lectures, read the materials, prepare written summaries of discussed papers, present a paper in class, complete a course project and take the final exam (in the form of the course project presentation).
Computer SecurityorCSDS 444 (3)sysCSDS 444: Computer SecurityGeneral types of security attacks; approaches to prevention; secret key and public key cryptography; message authentication and hash functions; digital signatures and authentication protocols; information gathering; password cracking; spoofing; session hijacking; denial of service attacks; buffer overruns; viruses, worms, etc., principles of secure software design, threat modeling; access control; least privilege; storing secrets; socket security; firewalls; intrusions; auditing; mobile security.
Smartphone SecurityorCSDS 448 (3)sysCSDS 448: Smartphone SecurityThis course is designed to better prepare undergraduate and graduate students for researching and developing in the neighborhood of mobile and software security. Lectures, paper readings and presentations, in-class discussions, and projects are the main components. The course covers the basics of Android programming and a wide range of security issues and solutions concerning mobile platforms, including permission analysis, textual artifacts analysis, malware analysis, program analysis, and UI analysis. Students should expect one literature survey paper and one system-building or empirical study project on one selected security solution in mobile app security.
Introduction to CryptologyMATH 408 (3)mathMATH 408: Introduction to CryptologyIntroduction to the mathematical theory of secure communication. Topics include: classical cryptographic systems; one-way and trapdoor functions; RSA, DSA, and other public key systems; Primality and Factorization algorithms; birthday problem and other attack methods; elliptic curve cryptosystems; introduction to complexity theory; other topics as time permits.
- Senior Project in Computer ScienceCSDS 395 (4)capstoneCSDS 395: Senior Project in Computer Science
Capstone course for computer science seniors. Material from previous and concurrent courses used to solve computer programming problems and to develop software systems. Professional engineering topics such as project management, engineering design, communications, and professional ethics. Requirements include periodic reporting of progress, plus a final oral presentation and written report. Scheduled formal project presentations during last week of classes. Counts as a SAGES Senior Capstone course.
Math/Stat Courses
- Calculus for Science and Engineering IMATH 121 (4)mathMATH 121: Calculus for Science and Engineering I
Functions, analytic geometry of lines and polynomials, limits, derivatives of algebraic and trigonometric functions. Definite integral, antiderivatives, fundamental theorem of calculus, change of variables.
- Calculus for Science and Engineering IIorMATH 122 (4)mathMATH 122: Calculus for Science and Engineering II
Continuation of MATH 121. Exponentials and logarithms, growth and decay, inverse trigonometric functions, related rates, basic techniques of integration, area and volume, polar coordinates, parametric equations. Taylor polynomials and Taylor's theorem.
- Introduction to Linear Algebra for ApplicationsorMATH 201 (3)mathMATH 201: Introduction to Linear Algebra for Applications
Matrix operations, systems of linear equations, vector spaces, subspaces, bases and linear independence, eigenvalues and eigenvectors, diagonalization of matrices, linear transformations, determinants. Less theoretical than MATH 307. Appropriate for majors in science, engineering, economics.
Linear AlgebraMATH 307 (3)mathMATH 307: Linear AlgebraA course in linear algebra that studies the fundamentals of vector spaces, inner product spaces, and linear transformations on an axiomatic basis. Topics include: solutions of linear systems, matrix algebra over the real and complex numbers, linear independence, bases and dimension, eigenvalues and eigenvectors, singular value decomposition, and determinants. Other topics may include least squares, general inner product and normed spaces, orthogonal projections, finite dimensional spectral theorem. This course is required of all students majoring in mathematics and applied mathematics. More theoretical than MATH 201.
- Calculus for Science and Engineering IIIorMATH 223 (3)mathMATH 223: Calculus for Science and Engineering III
Introduction to vector algebra; lines and planes. Functions of several variables: partial derivatives, gradients, chain rule, directional derivative, maxima/minima. Multiple integrals, cylindrical and spherical coordinates. Derivatives of vector valued functions, velocity and acceleration. Vector fields, line integrals, Green's theorem.
- Basic Statistics for Engineering and ScienceorSTAT 312 (3)mathSTAT 312: Basic Statistics for Engineering and Science
For advanced undergraduate students in engineering, physical sciences, life sciences. Comprehensive introduction to probability models and statistical methods of analyzing data with the object of formulating statistical models and choosing appropriate methods for inference from experimental and observational data and for testing the model's validity. Balanced approach with equal emphasis on probability, fundamental concepts of statistics, point and interval estimation, hypothesis testing, analysis of variance, design of experiments, and regression modeling.
Basic Statistics for Engineering and Science Using R ProgrammingorSTAT 312R (3)mathSTAT 312R: Basic Statistics for Engineering and Science Using R ProgrammingFor advanced undergraduate students in engineering, physical sciences, life sciences. Comprehensive introduction to probability models and statistical methods of analyzing data with the object of formulating statistical models and choosing appropriate methods for inference from experimental and observational data and for testing the model's validity. Balanced approach with equal emphasis on probability, fundamental concepts of statistics, point and interval estimation, hypothesis testing, analysis of variance, design of experiments, and regression modeling.
Statistics for ExperimentersorSTAT 313 (3)mathSTAT 313: Statistics for ExperimentersFor advanced undergraduates in engineering, physical sciences, life sciences. Comprehensive introduction to modeling data and statistical methods of analyzing data. General objective is to train students in formulating statistical models, in choosing appropriate methods for inference from experimental and observational data and to test the validity of these models. Focus on practicalities of inference from experimental data. Inference for curve and surface fitting to real data sets. Designs for experiments and simulations. Student generation of experimental data and application of statistical methods for analysis. Critique of model; use of regression diagnostics to analyze errors.
Statistics for Signal ProcessingorSTAT 332 (3)mathSTAT 332: Statistics for Signal ProcessingFor advanced undergraduate students or beginning graduate students in engineering, physical sciences, life sciences. Introduction to probability models and statistical methods. Emphasis on probability as relative frequencies. Derivation of conditional probabilities and memoryless channels. Joint distribution of random variables, transformations, autocorrelation, series of irregular observations, stationarity. Random harmonic signals with noise, random phase and/or random amplitude. Gaussian and Poisson signals. Modulation and averaging properties. Transmission through linear filters. Power spectra, bandwidth, white and colored noise. ARMA processes and forecasting. Optimal linear systems, signal-to-noise ratio, Wiener filter. Completion of additional assignments required from graduate students registered in this course.
Uncertainty in Engineering and ScienceorSTAT 333 (3)mathSTAT 333: Uncertainty in Engineering and SciencePhenomena of uncertainty appear in engineering and science for various reasons and can be modeled in different ways. The course integrates the mainstream ideas in statistical data analysis with models of uncertain phenomena stemming from three distinct viewpoints: algorithmic/computational complexity; classical probability theory; and chaotic behavior of nonlinear systems. Descriptive statistics, estimation procedures and hypothesis testing (including design of experiments). Random number generators and their testing. Monte Carlo Methods. Mathematica notebooks and simulations will be used. Graduate students are required to do an extra project.
Introduction to ProbabilityorMATH 380 (3)mathMATH 380: Introduction to ProbabilityCombinatorial analysis. Permutations and combinations. Axioms of probability. Sample space and events. Equally likely outcomes. Conditional probability. Bayes' formula. Independent events and trials. Discrete random variables, probability mass functions. Expected value, variance. Bernoulli, binomial, Poisson, geometric, negative binomial random variables. Continuous random variables, density functions. Expected value and variance. Uniform, normal, exponential, Gamma random variables. The De Moivre-Laplace limit theorem. Joint probability mass functions and densities. Independent random variables and the distribution of their sums. Covariance. Conditional expectations and distributions (discrete case). Moment generating functions. Law of large numbers. Central limit theorem. Additional topics (time permitting): the Poisson process, finite state space Markov chains, entropy.
Statistics for Business and Management Science IOPRE 207 (3)mathOPRE 207: Statistics for Business and Management Science IOrganizing and summarizing data. Mean, variance, moments. Elementary probability, conditional probability. Commonly encountered distributions including binomial. Poisson, uniform, exponential, normal distributions. Central limit theorem. Sample quantities, empirical distributions. Reference distributions (chi-square, z-, t-, F-distributions). Point and interval estimation: hypothesis tests.
Engineering Courses
- Impact of Engineering on SocietyENGR 399 (3)impactENGR 399: Impact of Engineering on Society
As engineers, we design and implement technical solutions with the goal of improving people's lives, locally and globally. However, the technical solutions can have disparate impacts, in that they are beneficial to some people but less beneficial, or even detrimental, to others. What are our ethical and professional responsibilities to understand, consider, and perhaps address the disparate impacts of our work on the affected local and/or global populations?
Science Courses
- Principles of Chemistry for EngineersCHEM 111 (4)sciCHEM 111: Principles of Chemistry for Engineers
A first course in university chemistry emphasizing chemistry of materials for engineering students. Atomic theory and quantitative relationships; gas laws and kinetic theory; solutions, acid-base properties and pH; thermodynamics and equilibrium; kinetics, catalysis, and mechanisms; molecular structure and bonding.
- General Physics I - MechanicsPHYS 121 (4)sciPHYS 121: General Physics I - Mechanics
Particle dynamics, Newton's laws of motion, energy and momentum conservation, rotational motion, and angular momentum conservation. This course has a laboratory component. Recommended preparation: MATH 121 or MATH 123 or MATH 125 or one year of high school calculus. Students who do not have the appropriate background should not enroll in PHYS 121 without first consulting the instructor. Students may earn credit for only one of the following courses: PHYS 115, PHYS 121, PHYS 123.
- General Physics II - Electricity and MagnetismPHYS 122 (4)sciPHYS 122: General Physics II - Electricity and Magnetism
Electricity and magnetism, emphasizing the basic electromagnetic laws of Gauss, Ampere, and Faraday. Maxwell's equations and electromagnetic waves, interference, and diffraction. This course has a laboratory component.
Other Courses
- 2 × Free Elective
Program Educational Objectives
- To educate and train students in the fundamentals of computer science and mathematics
- To educate students with an understanding of real-world computing needs
- To train students to work effectively, professionally and ethically in computing-related professions
Learning Outcomes
The Bachelor of Science degree program in computer science is designed so that students attain the ability to:
- Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions.
- Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline.
- Communicate effectively in a variety of professional contexts.
- Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles.
- Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline.
- Apply computer science theory and software development fundamentals to produce computing-based solutions.
History of the Major
2023 | Replace breadth (5 of 7 designated electives) + depth (4 electives in one of 6 areas) → breadth (2 electives from each of 4 areas) + 1 Technical Elective. Update list of technical electives. Add more options for the statistics requirement. Replace ENGR/ENGL 398 (Professional Communication for Engineers) → ENGR 399 (Impact of Engineering on Society). |
2022 | |
2021 | Replace Technical Elective → Secure Computing elective. |
2020 | Replace ENGR 145 (Chemistry of Materials) → Technical Elective. Renumber courses (EECS becomes CSDS). |
2019 | Add ENGR/ENGL 398 (Professional Communication for Engineers). |
2018 | Drop MATH 224 (Elementary Differential Equations). |
2017 | |
2016 |