Drexel University Online

Drexel Online. A Better U.

Online Master of Science in Computer Science

Request More Information

Submit

Curriculum

The online computer science degree program consists of 45 credits (15 courses) and is organized in 10-week quarters. Click here to view the pre-requisites for the MSCS program.

Pre-Core Courses - 6 credits*

CS 520

Foundations for Computer Science 

3 credits

CS 571

Programming Tools and Environments 

3 credits

*Students who meet all but a few of the program pre-requisites may be provisionally admitted and may be required to take one or both of the pre-core courses. If a student is required to take these courses for entry into the program, then the credits will count toward fulfillment of the electives.

Core Requirement - 9 credits

CS 521

Data Structures and Algorithms I

3 credits

CS 525

Theory of Computation

3 credits

CS 550

Programming Languages

3 credits

Flexible Core - 9 credits
Choose three courses from the following list:

CS 510

Introduction to Artificial Intelligence

3 credits

CS 522

Data Structures and Algorithms II

3 credits

CS 530

Developing User Interfaces

3 credits

CS 536 Computer Graphics 3 credits
CS 540 High Performance Computing 3 credits

CS 543

Operating Systems 3 credits

CS 544

Computer Networks 3 credits

CS 567

Applied Symbolic Computation 

3 credits

CS 576

Dependable Software Systems

3 credits

CS 583

Introduction to Computer Vision 

3 credits

Breadth Requirement - 9 credits
Choose a total of three courses, one each from three different areas**:

Algorithms & Theory 

CS 522

Data Structures and Algorithms II

3 credits

CS 620 Advanced Data Structures and Algorithms

3 credits

CS 621 Approximation Algorithms

3 credits

CS 623 Computational Geometry

3 credits

CS 676 Parallel Programming

3 credits

Artificial Intelligence & Robotics

CS 510

Introduction to Artificial Intelligence

3 credits

CS 610 Advanced Artificial Intelligence 3 credits
CS 612 Knowledge-Based Agents 3 credits
CS 613 Machine Learning 3 credits
Computer Graphics & Vision
CS 536 Computer Graphics 3 credits
CS 583 Introduction to Computer Vision 3 credits
CS 634 Advanced Computer Vision 3 credits
CS 636 Advanced Computer Graphics 3 credits
CS 637 Interactive Computer Graphics 3 credits
Human Computer Interaction
CS 530 Developing User Interfaces 3 credits
CS 630 Cognitive Systems 3 credits
CS 631 HCI: Computing Off the Desktop 3 credits
Numeric and Symbolic Computation
CS 540 High Performance Computing 3 credits

CS 567

Applied Symbolic Computation 

3 credits

CS 668 Computer Algebra I

3 credits

CS 669 Computer Algebra II

3 credits

Programming Language & Compilers
CS 551 Compiler Construction I

3 credits

CS 552 Compiler Construction II

3 credits

CS 650 Program Generation & Optimization 3 credits
CS 676 Parallel Programming

3 credits

Software Engineering
CS 575 Software Design 3 credits

CS 576

Dependable Software Systems

3 credits

CS 675 Reverse Software Engineering

3 credits

Systems
CS 543 Operating Systems 3 credits
CS 544 Computer Networks  3 credits
CS 643 Advanced Operating Systems 3 credits 
CS 645 Network Security 3 credits
CS 647 Distributed Software Systems 3 credits

CS 500

Database Theory 

3 credits

**Any one course may not be used to satisfy both the Flexible Core and Breadth requirements. The Department’s Graduate Committee may add and remove courses from the list, or change the placement of a course in this partition, as it deems necessary (for example, to respond to changes in course content or scheduling, or to incorporate new course offerings). Such changes will be reflected in these web pages as they are made.

Depth Requirement

M.S students are required to complete at least two CS courses beyond the breadth requirement. These courses should be 600 or 700 level courses. In addition, advanced courses may be taken from outside the department, if on the list of approved external courses, and may include CS 690 (Independent Study), if approved by the Department’s Graduate Advisor.

Thesis Option

CS 898 Master’s Thesis (6 credits)

Usually students pursuing a Master’s Thesis will first do 3 research credits (CS 690 or CS 997) to obtain background knowledge required by the thesis topic. 6 Thesis credits are taken in order to conduct thesis-related research and to write/defend an MS thesis. It is the responsibility of the student to find a thesis supervisor.

Non-Thesis Option

Two additional 600 or 700 level CS courses are taken in place of the 6 thesis credits.

Two additional graduate level courses

These courses may come from either the 600 or 700 level CS courses. In addition, courses may be taken from outside the department, if on the list of approved external courses, and may include CS 690 (Independent Study) and CS 997 (Research in Computer Science). CS 520 and CS 571 may only be used to fulfill the additional course requirement with permission of the Graduate Committee. Any course not explicitly listed above, including independent study and research courses, must be approved by the Department’s Graduate Advisor.

Other courses, such as intermediate 500-level and special topics, that the department offers may qualify for fulfilling this requirement. Students must check with the department to see if this is the case, and have these courses approved by the Graduate Committee. Any course offered by other departments that is not on the list of approved external courses must be approved by the Department’s Graduate Advisor, or it will not count towards the degree

 

Course Descriptions

CS 520 - Foundations for Computer Science 

Survey of basic mathematics concepts needed for the study of computer science at the graduate level: induction, iteration, recursion; analysis of program running time; elementary probability and combinatorics; relations, graphs and trees; regular expressions and finite automata; propositional and predicate logic.

Back to course list

CS 521 - Data Structures and Algorithms I 

Techniques for analyzing algorithms: asymptotic notation, recurrences, and correctness of algorithms; divide and conquer: quick sort, merger sort, median and order statistics; elementary data structures: hashing, binary heaps, binary search trees, balanced search trees; graph algorithms: Depth and Breadth first searches, connected components, minimum spanning trees, shortest paths in graphs.

Back to course list

CS 522 - Data Structures and Algorithms II 
(Prerequisite: CS 557 Minimum Grade: C) 

Discussion of algorithm design techniques, augmented data structures including Binomial and Fibonacci heaps and Splay tree; Amortized analysis of data structures, topics in pattern and string matching, network flow problem, matching in bipartite graphs, and topics in complexity theory including reduction and NP-completeness, and approximation algorithms.

Back to course list

CS 525 - Theory of Computation 
(Pre-Requisites: CS 521 Minimum Grade: C or CS 557 Minimum Grade:C) 

Theory of computation introduces basic mathematical models of computation and the finite representation of infinite objects. These topics covered in the course include: finite automata and regular languages, context free languages, Turning machines, Partial recursive functions, Church's Thesis, undecidability, reducibility and completeness, and time complexity.

Back to course list

CS 536 - Computer Graphics

An introduction to the basic concepts of computer graphics, including the graphics pipeline, 2D drawing, 3D viewing, mathematical representations of objects (lines, curves, surfaces and solids), color, and how these concepts are implemented.

Back to course list

CS 540 - High Performance Computing

Covers basic von Neumann architectural concepts involving memory organization, instruction, and data representations, including computer number systems, assembler and linker operations, character codes, floating point numbers, IEEE standard, subroutines and coroutines, macros, traps and interrupts, and overview of virtual memory concepts. Includes assembly language programming and laboratory exercises.

Back to course list

CS 543 - Operating Systems 

Covers the classical internal algorithms and structures of operating systems, including CPU scheduling, memory management, and device management. Considers the unifying concept of the operating system as a collection of cooperating sequential processes. Covers topics including file systems, virtual memory, disk request scheduling, concurrent processes, deadlocks, security, and integrity.

Back to course list

CS 544 - Computer Networks 

To examine computer networks using networking models (TCPIIP, OSI and ATM) and break down computer networking, examine each layer and its duties and responsibilities. To analyze networking protocols and understand the design. To use the Internet and other example protocols to illustrate the theory and operation of each layer.

Back to course list

CS 550 - Programming Languages 

Covers basic concepts of the design and implementation of programming languages, including data representation and types, functions, sequence control, environments, block structure, subroutines and coroutines, storage management. Emphasizes language features and implementation, not mastery of any particular languages.

Back to course list

CS 551 - Compiler Construction I

Provides a thorough study of modern compiler techniques. Topics include scanners, parsers with emphasis on LR parsing, and syntax-directed translation. Requires students to use a parser generator to write a compiler for a non-trivial language. Examines several advanced topics in depth, such as automatic code generation, error recovery, and optimization techniques.

Back to course list

CS 552 - Compiler Construction II

Continues CS 551. Examines several advanced topics in depth, such as automatic code generation, error recovery, optimization techniques, data flow analysis, and formal semantics.

Back to course list

CS 567 - Applied Symbolic Computation 

For uses of symbolic computation (maple, mathematica, derive, macsyma) who which to gain an understanding of fundamental symbolic mathematical methods. Includes introduction to a symbolic mathematical computation system and application to problems from mathematics, science and engineering. Also included programming and problems specific to symbolic computation.

Back to course list

CS 583 - Introduction to Computer Vision

Theoretical and algorithmic foundation and applications of computer vision. Covered topics include image formation, image sensing, image filtering, lightness, radiometry, motion, image registration, stereo, photometric stereo, shape-from-shading, and recognition with an emphasis on the underlying mathematics and computational models and complexity as well as computational implementation of representative applications through multiple programming assignments.

Back to course list

CS 571 - Programming Tools and Environments 

Covers UNIX operating system, Shell programming, PERL, JAVA, and advanced features of C++ from the viewpoint of efficient software development.

Back to course list

CS 500 - Database Theory I 

Introduces relational and knowledge base data models and contrasts the expressiveness of the two models. Covers semantics of knowledge bases, negation, dependencies, Armstrong's axioms, decompositions, and normal forms.

Back to course list

CS 510 - Introduction to Artificial Intelligence 

Well-formed problems; state spaces and search spaces; Lisp and functional programming; uniformed search; heuristic search; stochastic search; knowledge representation; propositional logic; first order logic; predicated calculus; planning; partial order planning; hierarchical planning.

Back to course list

CS 511 - Robot Lab

Building and programming machines built out of construction pieces, a micro-controller, actuators, motors, sensors, that interact with the world using limited computational resources. Issues in mechanics, physics, electronics, real-time control, uncertainty, map building, path planning, and other topics in introductory robotics.

Back to course list

CS 530 - Developing User Interfaces 

This course examines the implementation of multimodal user interfaces within the context of interface design and evaluation. The course involves both practice implementing interfaces using current technologies and study of topical issues such as rapid prototyping, advanced input, and assistive technology.

Back to course list

CS 575 - Software Design 

Introduces techniques and notations with formal (mathematical) underpinnings for specifying the structural and behavioral properties of software systems. Covers these systems at various levels of abstraction, from architecture to subsystem decompositions to module/class dependencies and interfaces. Students analyze, synthesize, and express software designs using a variety of special-purpose design notations, and obtain practical experience with a team project. Topics include software architecture, architectural styles, module interconnection languages, modularity and information hiding principles, object-oriented design patterns (structural and behavioral), Petri nets, state charts, state transition diagrams, and Z notation.

Back to course list

CS 576 - Dependable Software Systems 

Offers an in-depth treatment of software testing and software reliability, two components of developing dependable software systems. Testing topics include path testing, data-flow testing, mutation testing, program slicing, fault interjection and program perturbation, paths and path products, syntax testing, logic-based testing, testing within the software development process, test execution automation and test design automation tools. Reliability topics include reliability metrics, fault avoidance, cleanroom software development, fault tolerance, exception handling, N-version programming, recovery blocks, formal methods, functional specifications, and Z notation.

Back to course list

CS 610 - Advanced Artificial Intelligence

Representation, reasoning, and decision-making under uncertainty; dealing with large, real world data sets, learning; and solving problems with time-varying properties; how to apply AI techniques toward building intelligent machines that interact with dynamic, uncertain worlds.

Back to course list

CS 612 - Knowledge-Based Agents

Fundamentals of agent-based computing; distributed AI; representations; agent communication languages; reasoning (expert, rule-based, case-based, production systems); network communication protocols; emergent behavior; swarm intelligence.

Back to course list

CS 613 - Machine Learning

This course studies modern statistical machine learning with emphasis on Bayesian modeling and inference. Covered topics include fundamentals of probabilities and decision theory, regression, classification, graphical models, mixture models, clustering, expectation maximization, hidden Markov models, Kalman filtering, and linear dynamical systems.

Back to course list

CS 620 - Advanced Data Structure / Algorithms 

This course studies how advanced topics are used in the real world and generates an appreciation of where algorithms are used to understand various considerations that make a good algorithm. Topics: data compression, geometrical algorithms in search and indexing, pattern matching, sparse linear systems, applications of linear programming, and computational gene recognition.

Back to course list

CS 621 - Approximation Algorithms 

Study of techniques for designing approximation solution to NP-hard problems. Classification of problems into different categories based on the difficulty of finding approximately sub-optimal solutions for them. The techniques will include greedy algorithms, sequential algorithms, local search, linear and integer programming, primal-dual method, randomized algorithms, and heuristic methods.

Back to course list

CS 623 - Computational Geometry

Introduction to algorithms and Data Structures for computational problems in discrete geometry (for points, lines and polygons) primarily in finite dimensions. Topics include triangulation and planar subdivisions, geometric search and intersections, convex hulls, Voronoi diagram, Delaunay triangulation, line arrangements, visibility, and motion planning.

Back to course list

CS 630 - Cognitive Systems

This course explores the principles of cognition and intelligence in human beings and machines, focusing in how to build computational models that, in essence, think and act like people. The course reviews existing frameworks for such models, studies model development within one particular framework, and discusses how models can be employed in real-world domains.

Back to course list

CS 631 - HCI:  Computing Off the Desktop

This course discussed the use of the computers "off-the-desktop," focusing in particular on design and implementation aspects of the user experience. The course is taught as a graduate seminar: while there are minimal lectures to introduce important concepts, the majority of the time is spent presenting and discussing research papers in each class session. The course also involves a multi-week individual project in which students design, implement, and evaluate an "off-the-desktop" interface.

Back to course list

CS 634 - Advanced Computer Vision

A research-intensive course on advanced topics that reflect the state-of-the-art of current research activities in computer vision. The course alternates between lectures on the fundamentals of, and paper presentations by the students on, selected topics.

Back to course list

CS 636 - Advanced Computer Graphics

Texture and Bump maps; rendering techniques (phong, gourand, radiosity); particle systems; hierarchical models; photorealism; non-photorealistic rendering; geometric compression; mathematical structures for graphics.

Back to course list

CS 637 - Interactive Computer Graphics

This is a project-oriented class that covers the concepts and programming details of interactive computer graphics. These include graphics primitive, display lists, picking, shading, rendering buffers and transformations. Students will learn an industry-standard graphics system by implementing weekly programming assignments. The course culminates with a student-defined project.

Back to course list

CS 647 - Distributed Systems Software

In-depth discussion of fundamental concepts of distributed computer systems. Covers development techniques and runtime challenges, with a focus on reliability and adaptation concerns. Subjects discussed include: interprocess communication, remote procedure calls and method invocation, middleware, distributed services, coordination, transactions, concurrency control and replication. Significant system-building term project in Java or similar language.

Back to course list

CS 675 - Reverse Software Engineering

Expose students to the challenges of understanding large legacy software systems. Course approach is based on hands-on practical experience, where teams of students work on real software using state of the art reverse engineering tools for source code analysis, dynamic analysis and profiling, software clustering, and visualizations.

Back to course list

CS 676 - Parallel Programming

Covers a variety of paradigms and languages for programming parallel computers. Several tools for debugging and measuring the performance of parallel programs will be introduced. Issues related to writing correct and efficient parallel programs will be emphasized. Students will have ample opportunity to write and experiment with parallel programs using a variety of parallel programming environments.

Back to course list

CS 643 - Advanced Operating Systems

In-depth examination of operating systems issues expanding on topics covered in CS 543 (Operating Systems) including: Kernal services, memory management, input/output, file systems, interprocess communication, networking, device drivers, system initialization. Included discussion of production systems such as BSD Unix and Microsoft Windows.

Back to course list

CS 645 - Network Security 
(Pre-Requisites: (CS 543 Minimum Grade: C or CS 720 Minimum Grade: C ) and (CS 544 Minimum Grade: C or CS 740 Minimum Grade: C )) 

The purpose of this course is to cover the principles and practice of cryptography and network security. The first half of the course covers cryptography and network security techniques. The second part deals with the practice of network security, i.e. with the processes and application that have to be in place to provide security.

Back to course list

CS 650 - Program Generation & Optimization

This course introduces the student to the foundations and state-of-the-art techniques in high performance software development for numeric libraries and other important kernels. Topics include: 1) fundamental tools in algorithm theory, 2) optimizing compilers, 3) effective utilization of the memory hierarchy and other architectural features, 4) how to use special instruction sets, and 5) an introduction to the concepts of self-adaptable software and program generators.

Back to course list

CS 668 - Computer Algebra I

Introduction to Foundations of Symbolic Computation. Typical topics : Arithmetic with large integers, rational numbers, polynomials, modular arithmetic, greatest common divisors, chinese remainder algorithm.

Back to course list

CS 669 - Computer Algebra II

The course continues the introduction to symbolic computation. Typical topics include polynomial root computation, exact arithmetic with real algebraic numbers and the solution of polynomial systems of equations using groebner or elimination methods.

Back to course list

Print | Email To A Friend | Share Share