CSC 200 | SURVEY OF COMPUTING | 4 quarter hours
(Undergraduate)
This introductory course explores various careers in the field of information technology. A hands-on component will deal with state of the art personal computer operating systems, applications, database systems, Internet, email, and basic website construction. The structure of the course utilizes both classroom lectures and computer classroom labs. This course is geared toward the non-major and assumes no prior knowledge or experience in Computer Science.
CSC 208 | ETHICS IN TECHNOLOGY | 4 quarter hours
(Undergraduate)
Information Technology and the rapid pace in which it has advanced have had a tremendous impact on our lives. Changes have been swift and the human capacity to deal with them is limited. It has been said that our technology has outpaced our humanity. This course will research the new responsibilities technology presents and our ability to deal with these changes in an ethical manner. Students will employ ethical frameworks, which integrate computer science and ethics, to develop the skills required to examine different sets of assumptions and question them. Case studies will provide a historical perspective for analysis.
CSC 211 | PROGRAMMING IN JAVA I | 4 quarter hours
(Undergraduate)
Introduction to programming in Java and problem solving. Variables, data types, input/output, using objects and methods from the standard classes (such as String and Scanner), control structures, writing methods, arrays. Solving problems with algorithms and implementing algorithms in Java. (Not for CS majors)
CSC 212 | PROGRAMMING IN JAVA II | 4 quarter hours
(Undergraduate)
Intermediate programming in Java and problem solving. Writing Java programs with multiple classes: constructors, visibility modifiers, static members, accessor and mutator methods, and arrays of objects. Inheritance, polymorphism, and interfaces. Sorting arrays of primitive data and arrays of objects. Exception handling. (Not for CS majors)
CSC 211 is a prerequisite for this class.
CSC 221 | FOUNDATIONS OF COMPUTER SCIENCE | 4 quarter hours
(Undergraduate)
This course introduces students to the foundations of computer science. Students will learn how to use mathematical data types to model problems in computer science, apply mathematical and computational tools to analyze and solve the problems, and use formal reasoning techniques to verify and analyze the solutions. Topics covered in this course include numbers, strings, functions, sets, graphs, relations, propositional logic, and combinatorics.
MAT 130 or above or equivalent or Mathematics Diagnostic test placement into MAT 140 is the prerequisite for this class.
CSC 222 | FOUNDATIONS OF COMPUTER SCIENCE II | 4 quarter hours
(Undergraduate)
This course is the second in a two-course sequence introducing students to the foundations of computer science. Students will learn how to use mathematical data types to model problems in computer science, apply mathematical and computational tools to analyze and solve the problems, and use formal reasoning techniques to verify and analyze the solutions. Topics covered include algebraic structures, graphs, state machines, linear algebra, formal reasoning principles, first-order logic, combinatorics, and probability.
CSC 223 | THE IMPACT OF COMPUTING TECHNOLOGY ON OUR LIVES | 4 quarter hours
(Undergraduate)
This course will introduce students to an overview of social analysis techniques and the theories of social change. These tools will be used to explore social impact issues of computing technology. Counts for Liberal Studies SCBI credit.
CSC 233 | CODES AND CIPHERS | 4 quarter hours
(Undergraduate)
This course is an introduction to the science and history of secret writing (cryptography) and how codes and ciphers can be broken (cryptanalysis). In historical settings we will encounter the main ideas and methods devised to secure communication channels. Possible topics include: substitution ciphers, transposition ciphers, the Vigenere cipher, statistical methods in cryptanalysis, public-key cryptography, and quantum cryptography.
MAT 120 (or MAT 130 or CSC 241 or CSC 243) is a prerequisite for this class.
CSC 235 | PROBLEM SOLVING | 4 quarter hours
(Undergraduate)
How do you solve a problem? In this course we discuss different problem solving techniques and strategies such as modeling, establishing subgoals, and searching and pruning. The techniques will be presented as part of a theoretical framework, but there will be significant emphasis on solving problems in familiar domains such as games, newspaper articles, philosophy, and simple geometry and logic. At the end of the course, students will have built a repertoire of problem solving tools that will allow them to make an informed choice of approach towards new problems.
CSC 241 | INTRODUCTION TO COMPUTER SCIENCE I | 4 quarter hours
(Undergraduate)
An introduction to problem solving, algorithms and structured programming using a higher-level programming language. The course will focus on skills for developing algorithms, and for writing and debugging programs. Students will learn how and when to use loops, conditionals, and functional abstractions in the context of problems motivated by real world applications.
MAT 130 or above or equivalent or Mathematics Diagnostic test placement into MAT 140 is the prerequisite for this class.
CSC 242 | INTRODUCTION TO COMPUTER SCIENCE II | 4 quarter hours
(Undergraduate)
An intermediate course in problem solving, algorithms and programming. Programming skills are further strengthened through more complex and larger programming assignments. The assignments will also be used to introduce different Computer Science areas (e.g. a Client/Server application for the Distributed Systems area). Classes and object oriented programming are motivated and introduced.
CSC 241 is the prerequisite for this class.
CSC 243 | INTRODUCTION TO COMPUTER SCIENCE FOR PROGRAMMERS | 4 quarter hours
(Undergraduate)
An accelerated course covering the essentials of programming, with a focus on problem-solving, structured programming, and algorithm design. The concepts covered include collection types, conditional and iterative structures, functions, file input/output, exceptions, namespaces, recursion, and Internet client programming. Students are expected to have successfully completed at least one high-level, object-oriented programming class prior to enrollment.
MAT 130 or above or equivalent or Mathematics Diagnostic test placement into MAT 140 is the prerequisite for this class.
CSC 250 | COMPUTERS AND HUMAN INTELLIGENCE | 4 quarter hours
(Undergraduate)
Students taking this course will study human problem-solving and its simulation by computers. Artificial intelligence, pattern recognition and learning programs will be discussed. PREREQUISITE(S): Familiarity with basic computer productivity tools and the Web.
CSC 270 | FROM FIREFLIES TO FACEBOOK: THE SCIENCE OF NETWORKS | 4 quarter hours
(Undergraduate)
This course explores complex systems both natural and man-made, characterized by the relationships between interacting entities. Network structures can be found in the Internet and its many applications, but also in social relationships, marketplaces, ecosystems, even cells. We will examine a wide range of networks including technological, social, and natural. Students will learn basic concepts from graph theory, algorithms and network analysis, apply tools for extracting, analyzing and visualizing network properties, using data sets drawn from a variety of areas.
MAT 120 is a prerequisite for this class.
CSC 281 | WORKSHOP: JAVA FOR PROGRAMMERS | 2-2.25 quarter hours
(Undergraduate)
This course introduces students to the Java programming language and eclipse development environment.
CSC 282 | WORKSHOP: LINUX FOR PROGRAMMERS | 2-2.25 quarter hours
(Undergraduate)
This course provides an introduction to Linux, the command-line environment, C programming, and version control.
CSC 297 | APPLIED AI LAB | 4 quarter hours
(Undergraduate)
In this hands-on course, students will study AI technologies, develop AI models, and apply AI tools and libraries to solve problems in a particular domain. Safe and responsible use of AI will be addressed. Topics will vary by the faculty member's interest and perspective.
CSC 298 | INTERNSHIP | 4 quarter hours
(Undergraduate)
This course satisfies the junior year experiential learning requirement. In cooperation with local employers, this course offers students the opportunity to integrate their academic experience with on-the-job training in computer related work areas. Admission to the program requires consent of internship course instructor. Current work experience plus classroom time is required. Supervisor evaluation will contribute to the final grade.
CSC 299 | SOPHOMORE LAB IN APPLIED COMPUTING | 4 quarter hours
(Undergraduate)
In this course, students investigate a particular application of computing. Students learn tools, methodologies, and formalisms used in a particular computing area, and apply them to develop working systems. Courses stress student initiative in investigating the application context, learning new tools (including languages and APIs), studying algorithms and code examples, and working on projects. Topics will vary by the faculty member's interest and perspective.
CSC 300 | DATA STRUCTURES I | 4 quarter hours
(Undergraduate)
This is the first course in a two-course sequence on data structures using Java. The course introduces basic Java programming, reviews recursion, introduces asymptotic notations, and focuses mainly on linear data structures including arrays, linked lists and their variants, stacks and queues, and data structures supporting disjoint-set operations. The implementation of the basic operations on each data structure are discussed and analyzed in terms of their efficiency. The applications covered highlight and exploit the unique characteristics of the data structures, and emphasize problem solving and recursive thinking.
CSC 301 | DATA STRUCTURES II | 4 quarter hours
(Undergraduate)
This is the second course in a two-course sequence on data structures using Java. The course focuses mainly on the following data structures, their analysis, and their applications: trees (search trees, balanced search trees), heaps, associative arrays, hash tables, and data structures for representing graphs. The implementation of the basic operations on each data structure are discussed and analyzed in terms of their efficiency. The applications discussed highlight and exploit the unique characteristics of the different data structures, and emphasize problem solving and recursive thinking.
CSC 308 | FRAMEWORKS FOR WEB APPLICATION DEVELOPMENT | 4 quarter hours
(Undergraduate)
This course introduces concepts, techniques, technologies and APIs for web application development. The main focus of the course is on the Model-View-Controller design pattern employed by modern full-stack web frameworks. Concepts and techniques covered include client/server programming, database abstraction APIs, and asynchronous JavaScript. Examples of full-stack MVC frameworks include Ruby-on-Rails (written in Ruby), Django and TurboGears (written in Python).
CSC 374 is a prerequisite for this class.
CSC 309 | C++ FOR PROGRAMMERS | 4 quarter hours
(Undergraduate)
This course covers the essentials of C and C++ programming, focusing primarily on the topics of memory management and object-oriented programming. Topics include pointers and dynamic allocation, operator overloading, copy constructors and destructors, inheritance and polymorphism.
(CSC 242 or CSC 243) or proficiency in another programming language is a prerequisite for this class.
CSC 321 | DESIGN AND ANALYSIS OF ALGORITHMS | 4 quarter hours
(Undergraduate)
Techniques for designing algorithms including: analyzing algorithms (big-O, recurrence relations) and divide-and-conquer (quicksort, mergesort). Additional topics chosen from: the greedy method, dynamic programming, backtracking, branch-and-bound and string matching.
CSC 301 and MAT140 are prerequisites for this class. MAT141 Recommended.
CSC 325 | TIME SERIES ANALYSIS AND FORECASTING | 4 quarter hours
(Undergraduate)
The course introduces students to statistical models for time series analysis and forecasting. The course topics include: autocorrelated data analysis, Box-Jenkins models (autoregressive, moving average, and autoregressive moving average models), analysis of seasonality, volatility models (GARCH-type, GARCH-M type, etc.), forecasting evaluation and diagnostics checking. The course will emphasize applications to financial data, volatility modeling and risk management. Real examples will be used throughout the course. PREREQUISITE(S): (CSC 212 or CSC 224 CSC 262 or CSC 309) and (CSC324 or MAT356) or consent of instructor.
CSC 327 | PROBLEM SOLVING FOR CONTESTS | 2-2.25 quarter hours
(Undergraduate)
This course prepares students to compete in programming contests. More broadly, it covers problem solving techniques in an informal, fun, and hands-on setting. This course will improve your analytical and programming skills and is thus recommended for all students and not just the competitors among us. This course can be taken for credit twice.
CSC 301 is a prerequisite for this class.
CSC 331 | SCIENTIFIC COMPUTING | 4 quarter hours
(Undergraduate)
This course presents fundamental numerical algorithms for solving problems in scientific computing and computational finance. Areas covered include: error analysis, computer arithmetic, linear algebra, optimization problems, numerical integration (solvers), ordinary differential equations (ODE). The emphasis of the course is on the design of the algorithms, and their analysis. Algorithms will be implemented using mathematical software.
((CSC 242 or CSC 243) and MAT 152) or by permission of instructor
CSC 333 | CRYPTOLOGY | 4 quarter hours
(Undergraduate)
Introduction to the methods of cryptography and cryptanalysis. Topics include classical cryptography (codes, substitution ciphers, transposition ciphers), block and stream ciphers (Feistel networks, DES), and public key cryptography (RSA, Key agreement, signature schemes). Optional topics include zero-knowledge protocols, quantum cryptography, and history.
(CSC 300 or IT 313) and MAT 140 are prerequisites for this class.
CSC 343 | INTRODUCTION TO OPERATING SYSTEMS | 4 quarter hours
(Undergraduate)
An advanced course on operating system design and implementation. Process management and scheduling, memory management, file systems, device drivers, access control, and virtualization will be covered. The emphasis of the course will be on implementing components of a functional operating system.
CSC 301 and CSC 373 and CSC 374 are prerequisites for this class.
CSC 344 | AUTOMATA THEORY AND FORMAL GRAMMARS | 4 quarter hours
(Undergraduate)
An introduction to the most important abstract models of computation and their applications: finite state machines and pushdown automata. Explores the relationship between regular expressions and formal grammars and automata.
CSC 347 | CONCEPTS OF PROGRAMMING LANGUAGES | 4 quarter hours
(Undergraduate)
This course examines concepts and programming paradigms that are found in multiple programming languages. Topics include but are not limited to functional programming, type systems, and runtime systems.
CSC 348 | INTRODUCTION TO COMPILER DESIGN | 4 quarter hours
(Undergraduate)
An overview of the design of a compiler for a general purpose programming language; tools for designing the components of the compiler; implementing the compiler; run time environments.
CSC 301 and CSC 373 and CSC 347 are prerequisites for this class.
CSC 352 | DATABASE PROGRAMMING | 4 quarter hours
(Undergraduate)
Programming in a large-scale relational database environment using procedural languages. Topics covered in the course include: procedural extension of query languages, runtime error handling, subprograms (procedures and functions), packages, database triggers, dynamic query language. Optional topics include transaction management, reliability, and security.
(IT 240 or CSC 355) and (CSC 212 or CSC 242 or CSC 243 or CSC 300 or CSC 309) are prerequisites for this class.
CSC 353 | ADVANCED DATABASE CONCEPTS | 4 quarter hours
(Undergraduate)
An introduction to advanced selected topics in databases. Possible topics include: object-oriented databases, distributed databases, intelligent and deductive databases, temporal databases, multimedia databases, spatial and geographic databases, fuzzy databases, mobile databases, data mining and data warehousing, as well as emerging issues and concepts in database design, implementation and management.
IT 240 is a prerequisite for this class.
CSC 355 | DATABASE SYSTEMS | 4 quarter hours
(Undergraduate)
An introduction to modern database systems; the course covers the traditional concepts and techniques of database systems including the relational model, SQL, indexes and normalization as well as a selection of advanced topics such as constraints and triggers, transactions, database programming, semi-structured data, and recursive SQL.
CSC 301 is a prerequisite for this class.
CSC 357 | EXPERT SYSTEMS | 4 quarter hours
(Undergraduate)
A study of the development of expert systems. Students will use commercial packages to develop standalone and embedded expert systems. Topics will include rule-based systems, decision trees, forward and backward chaining, inference, reasoning with uncertainty, and intelligent agents.
CSC 301 is a prerequisite for this class.
CSC 358 | SYMBOLIC PROGRAMMING | 4 quarter hours
(Undergraduate)
Concepts of symbolic programming as embodied in the language LISP. Basic data and control structures of LISP: symbolic expressions, the interpreter, functions, recursion, iteration. Techniques for prototyping and building conceptually advanced systems in an environment that encourages procedural and data abstraction. Advanced topics may include Prolog, intelligent tutoring systems, intelligent agents, and natural language processing. Assignments will focus on basic AI techniques, but the class is intended for anyone who will need to rapidly develop large complex systems.
CSC 301 is a prerequisite for this class.
CSC 360 | WEB APPLICATIONS | 4 quarter hours
(Undergraduate)
This course covers the design and development of single-page web applications and their interaction with web services. Possible topics include: HTML; JavaScript/TypeScript; RxJS; Frameworks such as Angular and/or React; Node.js; programming and security models for browsers; client-side web applications with local storage; HTTP, proxies, and caching.
CSC 361 | OPTIMIZED C++ | 4 quarter hours
(Undergraduate)
Implementation techniques to improve the performance and resource usage of C++ programs. This class will provide low level understanding of C++'s internal behavior that can be exploited to create faster performing software. Identify existing SISD (single instruction single data) implementation and refactor into SIMD (single instruction multiple data) to improve math centric software segments. Understand a system's dynamic memory usage to design and implement a custom high performance memory system. Topics include: performance enhancements through extended SIMD instuction set, dynamic memory usage, caching, implicit behavior, C++ language extensions, algorithms, streaming and profiling.
CSC 362 | OPTIMIZED C++ MULTITHREADING | 4 quarter hours
(Undergraduate)
Applied C++ concurrency and multithreading fundamentals. Basic threading concepts: process model, threads, stacks, fibers, mutexes, semaphores, atomics, and events. Understanding synchronous/ asynchronous interactions and behavior of threads. Using managed thread pools and queues in applications. Understanding advanced C++ language features relating to the memory model and the threading support.
CSC 361 and (SE 350 or GAM 372) are prerequisites for this class.
CSC 363 | THEORY AND PRACTICE OF SAFE SYSTEMS PROGRAMMING | 4 quarter hours
(Undergraduate)
Modern developments in programming languages, toolchains, and package management reduce the risk of security vulnerabilities from programming errors and supply chain attacks. This course covers the theory and practice of ownership type systems, their application in systems programming, and discussion of the vulnerabilities they mitigate. Approaches to software integrity and distributed code review are investigated in the context of package management and supply chain attacks. Coursework includes development of a large systems program in a language with ownership types such as Rust.
CSC 347 is a prerequisite for this class.
CSC 364 | VIRTUALIZATION AND CLOUD COMPUTING | 4 quarter hours
(Undergraduate)
This course will cover underlying technologies that enable major cloud computing providers to deliver computing resources to consumers on-demand over the Internet, focusing primarily on virtualization and containers. Topics to be covered will include many aspects of the design and implementation of hypervisors and containers, ranging from isolation, namespaces, cgroups stackable file systems, copy-on-write, and scheduling of containers. Coursework includes development of a container project applying concepts learned in class and involves systems programming.
CSC 366 | INTRODUCTION TO PROGRAM ANALYSIS | 4 quarter hours
(Undergraduate)
A course on program analysis topics, focusing on control flow and data flow analysis, program slicing, pointer analysis, intra-procedure and inter-procedure analysis, fuzzing, symbolic execution, and applications of program analysis for addressing software and security issues.
CSC 373 is the prerequisite for this class.
CSC 371 | MOBILE APPLICATION DEVELOPMENT FOR IOS | 4 quarter hours
(Undergraduate)
This course introduces the core issues associated with application development for mobile devices using the iOS platform. Students will learn the Swift language, the XCode IDE, UIKit and other frameworks, the elements and architecture of the user interfaces, and more. Students will be exposed to the iOS system architecture including memory management, MVC, delegates and threads. Topics will also include understanding and handling of multi-touch events, gestures, and motion events.
CSC 372 | MOBILE APPLICATION DEVELOPMENT FOR ANDROID | 4 quarter hours
(Undergraduate)
This course introduces the core issues associated with application development for mobile devices using the Android platform. Students will learn the Eclipse IDE, frameworks, the elements and architecture of user interfaces, graphics, and more. Students will be exposed to the Android system architecture, including Views, Widgets, Resources, Adapters, Intents and Activities. Topics will also include understanding and handling of threads, multi-touch events, gestures, and motion events. PREREQUISITE(S): (CSC 301 or CSC 383 or CSC 393) and CSC 374.
CSC 301 is a prerequisite for this class.
CSC 373 | COMPUTER SYSTEMS I | 4 quarter hours
(Undergraduate)
A course on computer systems topics, focusing on machine-level programming and architecture and their relevance for application programming. Information representations, assembly language, C programming, and debuggers, processor architecture.
CSC 374 | COMPUTER SYSTEMS II | 4 quarter hours
(Undergraduate)
A course on computer systems topics, focusing on operating systems components and their relevance for application programming. Caching, memory hierarchy, performance optimization, linking, processes, virtual memory, dynamic memory allocation, system level I/O. PREREQUISITE: CSC 373.
CSC 373 is the prerequisite for this class.
CSC 376 | DISTRIBUTED SYSTEMS | 4 quarter hours
(Undergraduate)
An introduction to distributed systems. Topics may include: architecture of distributed systems; networking; datagram-oriented and stream-oriented protocols; network programming (for example, the sockets API); remote procedure call and remote method invocation; processes and threads; code migration; software agents; naming of non-mobile and mobile entities; cryptography and security.
CSC 379 | TECHNOLOGY PARTNERSHIPS IN URBAN SCHOOLS | 4 quarter hours
(Undergraduate)
Students in this course will have the opportunity to assess urban community needs in the technology arena and develop skills in assisting and developing methods for "bridging the digital divide" that exists. As a result, the student will be able to make a substantial difference in an underprivileged academic community group. This course is a CDM-sponsored community-based service learning course. Any student enrolled in this course can also satisfy the junior year experiential learning requirement.
CSC 380 | FOUNDATIONS OF ARTIFICIAL INTELLIGENCE | 4 quarter hours
(Undergraduate)
An in-depth survey of important concepts, problems, and techniques in artificial intelligence, including search, knowledge representation, logical reasoning, and reasoning with uncertainty. A particular focus and a unifying theme of the course will be the concept of intelligent agents. No prior knowledge of AI is required. The course is particularly suitable for students who want to gain the technical background necessary to build intelligent systems, or who want to prepare for more advanced work in AI. The concepts and techniques learned in this course will be directly applicable to many other areas of computer science including software design, distributed systems, databases, and information management and retrieval.
CSC 301 is a prerequisite for this class.
CSC 381 | INTRODUCTION TO DIGITAL IMAGE PROCESSING | 4 quarter hours
(Undergraduate)
Components of an image processing system and its applications, elements of visual perception, sampling and quantization, image enhancement by histogram equalization, color spaces and transformations, introduction to segmentation (edge detection algorithms), and morphological image processing.
CSC 382 | APPLIED IMAGE ANALYSIS | 4 quarter hours
(Undergraduate)
Image analysis from classical computational imaging techniques to deep learning techniques. Fundamentals of computational image analysis in terms of image information extraction and modeling of image patterns. Specific topics include, but are not limited to: image segmentation, multi-scale representation, shape analysis, texture analysis, Fourier analysis, wavelets, Gabor and fractal analysis, and template matching. Deep learning models to extract image representations automatically. Classical and deep learning imaging techniques applied and compared in the context of different image analysis tasks such as image representation, segmentation, classification, retrieval, and object recognition. Applications of these techniques for autonomous driving, biometrics, sports analytics, smart and connected communities, and biomedical and health informatics.
CSC 381 is a prerequisite for this class.
CSC 383 | DEEP LEARNING | 4 quarter hours
(Undergraduate)
Introduces the fundamental concepts of deep neural networks and deep learning. The course will cover deep learning applications in a variety of settings, from computer vision to self-driving cars, from Natural Language Processing to drones. Students will use existing AI/ML models and tools to solve problems.
CSC 384 | ETHICS IN ARTIFICIAL INTELLIGENCE | 4 quarter hours
(Undergraduate)
This course examines a broad range of ethical issues we face in a future where AI becomes increasingly integrated into modern society. This is a lecture / discussion survey course.
CSC 386 | REAL-TIME NETWORKING (FORMERLY GAM 390) | 4 quarter hours
(Undergraduate)
Applied real-time networking fundamentals. Topics include low-level TCP/UDP socket programming, serialization of data for network transportation, deterministic data flow and queuing in applications, dynamic configuration and session communications. Students will explore issues related to performance-based networking in different topologies: client/server and peer to peer. Students will create and build real-time applications using different protocols (TCP, UDP, RUDP) with active network simulation of loss, delayed, corrupted and out of order data packets.
GAM 372 or (SE 350 and CSC 361) are prerequisites for this class.
CSC 388 | REAL-TIME MULTITHREADED ARCHITECTURE | 4 quarter hours
(Undergraduate)
Real-time constrained multithreaded architecture. Topics include multithreaded handle development, inter-thread communication, creating systems for user-defined callbacks, asynchronous loading and streaming of resources, non-blocking threading synchronization, design patterns and data driven messaging with time delivery constraints Exploration of multithreaded interfaces to maintain uniqueness and control for contented resources. Wrapping and intergrating a multithreaded solution into an application will be analyzed. Students will design, develop and implement a multithreaded real-time application (i.e. Audio engine) that integrates existing single and multithreaded middleware libraries.
GAM 372 or (SE 350 and CSC 361) are prerequisites for this class.
CSC 389 | THEORY OF COMPUTATION | 4 quarter hours
(Undergraduate)
Advanced topics in the mathematical foundations of computation. Topics may include random access and Turing machines, recursive functions, algorithms, computability and computational complexity, intractable problems, NP-complete problems.
CSC 391 | MOBILE APPLICATION DEVELOPMENT FOR IOS II | 4 quarter hours
(Undergraduate)
This course will cover advanced topics in mobile application development for iOS. The topics covered will be made explicit by the course instructor when the course is offered.
CSC 371 is a prerequisite for this class.
CSC 392 | MOBILE APPLICATION DEVELOPMENT FOR ANDROID II | 4 quarter hours
(Undergraduate)
This course will cover advanced topics in mobile application development for Android. The topics covered will be made explicit by the course instructor when the course is offered.
CSC 372 is a prerequisite for this class.
CSC 393 | DATA STRUCTURES IN C++ | 4 quarter hours
(Undergraduate)
This course covers the design, implementation, application and analysis of algorithms on a variety of data structures, including lists, stacks, queues, trees, heaps, hash tables and graphs. Implementation is done in C++, in particular with the use of templates and the C++ standard template library (STL).
CSC 309 is a prerequisite for this class.
CSC 394 | SOFTWARE PROJECTS | 4 quarter hours
(Undergraduate)
Students will be provided with experience in team design, implementation and testing of a large software project.
CSC 301 is a prerequisite for this class.
CSC 395 | RESEARCH COLLOQUIUM | 2 quarter hours
(Undergraduate)
The research colloquium series features informal talks by a variety of speakers including DePaul faculty, students, and guests from the academic and business communities. The lectures feature new creative and scholarly works that encompass the disciplines and areas of interest of the School of Computing. The talks are free and open to all who are interested, though only students who register can obtain academic credit. Every quarter, a different set of speakers will be invited. (2 quarter hours)
WRD 204 and (CSC 321 or CSC 376 or CSC 355) are prerequisites for this class.
CSC 396 | AI PROJECTS | 4 quarter hours
(Undergraduate)
Students will work on the design, implementation, and testing of an AI project.
CSC 380 is a prerequiste for this course.
CSC 397 | TOPICS IN COMPUTER SCIENCE | 2-4 quarter hours
(Undergraduate)
Specific topics will be selected by the instructor and may vary with each quarter. Can be repeated for credit. Variable credit. PREREQUISITE(S): Consult the instructor (2 quarter hours)
CSC 398 | INTERNSHIP | 1-8 quarter hours
(Undergraduate)
This course does not carry Experiential Learning credit. In cooperation with local employers the computer science program offers students the opportunity to integrate their academic experience with on-the-job training in computer related work areas. Academic credit is variable and admission to the program requires consent of internship advisor. Supervisor evaluation will contribute to the final grade. This course is repeatable for 8.00 credit hours.
CSC 399 | INDEPENDENT STUDY | 1-8 quarter hours
(Undergraduate)
Independent study supervised by an instructor. Independent study form required. Can be repeated for credit. Variable Credit.
CSC 400 | DISCRETE STRUCTURES FOR COMPUTER SCIENCE | 4 quarter hours
(Graduate)
This course covers the basic mathematical tools essential for solving problems in computer science. The mathematical topics are presented with emphasis on their applications in computer science. The topics covered include: logic and set theory, relations, functions, graphs, and counting and probability.
CSC 401 | INTRODUCTION TO PROGRAMMING | 4 quarter hours
(Graduate)
An introduction to programming with a focus on problem solving, structured programming, and algorithm design. Concepts covered include data types, expressions, variables, assignments, conditional and iterative structures, functions, file input/output, exceptions, arrays and an introduction to user-defined classes.
CSC 402 | DATA STRUCTURES I | 4 quarter hours
(Graduate)
A first course on data structures in Java for graduate students. The course introduces Java programming from within the context of data structures. The course covers arrays, linked lists, stacks and queues, data structures supporting disjoint-set operations, and discusses recursion and performance analysis. The implementation of the basic operations on each data structure are discussed and analyzed in terms of their efficiency.
CSC 401 is a prerequisite for this class.
CSC 403 | DATA STRUCTURES II | 4 quarter hours
(Graduate)
This is the second course on data structures in Java for graduate students. The course covers trees, heaps, associative arrays, hash tables, tries, and data structures for representing graphs. The implementation of the basic operations on each data structure are discussed and analyzed in terms of their efficiency.
CSC 402 is a prerequisite for this class.
CSC 404 | ACCELERATED C++ | 4 quarter hours
(Graduate)
This introductory graduate course covers the essentials of C++ programming. Topics include encapsulation, inheritance, polymorphism, dynamic memory allocation, casting, pointer arithmetic, operator overloading, templates, and the Standard Template Libraries.
CSC 401 is a prerequisite for this class.
CSC 406 | SYSTEMS I | 4 quarter hours
(Graduate)
An introductory graduate course on computer systems topics, focusing on machine-level programming and architecture and their relevance for application programming. Information representations, assembly language and debuggers, processor architecture, program optimization, memory hierarchy and caching. Students are recommended to finish CSC 400 before enrolling in this course.
CSC 401 is a prerequisite for this class.
CSC 407 | SYSTEMS II | 4 quarter hours
(Graduate)
An introductory graduate course on computer systems topics, focusing on operating systems components and their relevance for application programming. Linking, processes, virtual memory, dynamic memory allocation, system level I/O, networking and network programming, concurrent servers and web services.
CSC 412 | TOOLS AND TECHNIQUES FOR COMPUTATIONAL ANALYSIS | 4 quarter hours
(Graduate)
Use of mathematical software to explore basic concepts in linear algebra and calculus. Scripting for symbolic and computational processing. Emphasis is on applications in computer science, finance, data mining, and computer vision.
CSC 421 | APPLIED ALGORITHMS AND STRUCTURES | 4 quarter hours
(Graduate)
This course covers techniques for designing and analyzing algorithms and structures in the context of computer application development. Examples will come from Internet, WWW, database, and computer system applications. Fundamental topics such as running-time analysis, searching and sorting within various structures, divide-and-conquer and dynamic programming will be covered.
CSC 426 | RESEARCH METHODS AND PRACTICE IN COMPUTING | 4 quarter hours
(Graduate)
The course is intended to help students understand the process of and issues related to doing scientific research in computing or related areas. Topics covered include how to develop an effective research proposal, how to critically evaluate or review a scientific research paper, how to use appropriate research methods in scientific research, key elements of a publishable paper or a dissertation, ethics and professional responsibility in scientific research. The course is intended for PhD students in Computer and Information Sciences or for students who are interested in pursuing a research career.
PhD status or consent of instructor is a prerequisite for this class
CSC 431 | SCIENTIFIC COMPUTING | 4 quarter hours
(Graduate)
This course presents fundamental numerical algorithms for solving problems in scientific computing and computational finance. Areas covered include: error analysis, computer arithmetic, linear algebra, optimization problems, numerical integration (solvers), ordinary differential equations (ODE). The emphasis of the course is on the design of the algorithms, and their analysis. Algorithms will be implemented using mathematical software.
CSC 401 and two quarters of calculus (or instructor permission) are prerequisites for this course.
CSC 435 | DISTRIBUTED SYSTEMS I | 4 quarter hours
(Graduate)
An introduction to distributed systems. Topics may include: architecture of distributed systems; networking; datagram-oriented and stream-oriented protocols; network programming (for example, the sockets API); remote procedure call and remote method invocation; processes and threads; code migration; software agents; naming of non-mobile and mobile entities; cryptography and security.
CSC 436 | WEB APPLICATIONS | 4 quarter hours
(Graduate)
This course covers the design and development of modern web applications and their interaction with web services. The primary focus is on client-side web applications using AJAX-techniques to access web services. Possible topics include: HTML5; JavaScript/TypeScript; MVC and single-page application programming models, e.g., AngularJS; programming and security models for browsers; client-side web applications with local storage; data synchronization; HTTP, proxies, and caching; Node.js; RESTful web services.
CSC 438 | FRAMEWORK FOR WEB APPLICATION DEVELOPMENT | 4 quarter hours
(Graduate)
This course introduces concepts, techniques, technologies and APIs for web application development. The main focus of the course is on the Model-View-Controller design pattern employed by modern full-stack web frameworks. Concepts and techniques covered include client/server programming, database abstraction APIs, and asynchronous javascript. Examples of full-stack MVC frameworks include Ruby-on-Rails (written in Ruby), Django and TurboGears (written in Python). PREREQUISITE: CSC 407.
CSC 407 is a prerequisite for this class.
CSC 439 | COMPUTER SECURITY | 4 quarter hours
(Graduate)
This course covers core principles of computer security. Topics include : user authentication; access control (discretionary, mandatory, role-based); security auditing; database security; software security, common vulnerabilities, and secure coding practices; malicious software; and operating system security.
CSC 407 is a prerequisite for this class.
CSC 440 | CRYPTOLOGY | 4 quarter hours
(Graduate)
Introduction to the methods of cryptography and cryptanalysis. Topics include classical cryptography (codes, monoalphabetic and polyalphabetic substitution ciphers, transposition ciphers), modern block ciphers (such as DES, AES), and public key cryptography (such as RSA). Optional topics include zero-knowledge protocols, information theory, coding theory, error-correcting codes, steganography, stream ciphers, hashing algorithms, quantum cryptography, elliptic curve cryptography, and history.
CSC 403 is a prerequisite for this class.
CSC 443 | INTRODUCTION TO OPERATING SYSTEMS | 4 quarter hours
(Graduate)
An advanced course on operating system design and implementation. Process management and scheduling, memory management, file systems, device drivers, access control, and virtualization will be covered. The emphasis of the course will be on implementing components of a functional operating system. PREREQUISITE: CSC 403 and CSC 407.
CSC 444 | AUTOMATA THEORY AND FORMAL GRAMMARS | 4 quarter hours
(Graduate)
An introduction to the most important abstract models of computation and their applications: finite state machines and pushdown automata. Explores the relationship between regular expressions and formal expressions and automata.
CSC 447 | CONCEPTS OF PROGRAMMING LANGUAGES | 4 quarter hours
(Graduate)
This course examines concepts and programming paradigms that are found in multiple programming languages. Topics include but are not limited to functional programming, type systems, and runtime systems.
CSC 448 | COMPILER DESIGN | 4 quarter hours
(Graduate)
Design and structure of high level languages. Lexical scan, top down and bottom up syntactic analysis. Syntax directed translation and LR(k) grammars.
CSC 447 is a prerequisite for this class.
CSC 452 | DATABASE PROGRAMMING | 4 quarter hours
(Graduate)
Programming in a large-scale relational database environment using procedural languages. Topics covered in the course include: procedural extension of query languages, runtime error handling, subprograms (procedures and functions), packages, database triggers, dynamic query language. Optional topics include transaction management, reliability, and security.
(CSC 453 or CSC 455 or DSC 450 or IS 451) and (CSC 401 or IS 411 or IT 411) are prerequisites for this course.
CSC 453 | PRINCIPLES OF DATABASE MANAGEMENT SYSTEMS | 4 quarter hours
(Graduate)
A core graduate course in database design and implementation. Topics include database implementation and queries in SQL, logical design or relational databases, storage and indexes, database programming, and emerging database models.
CSC 403 is a prerequisite for this class.
CSC 454 | DATABASE ADMINISTRATION AND MANAGEMENT | 4 quarter hours
(Graduate)
This course is designed to give students a comprehensive foundation in database administration and management. The course provides a conceptual understanding of the database architecture and how its components work and interact with one another. Topics covered in this course include: database architecture, capacity planning, installation and maintenance, network configuration, security management, utilities and tools, industry standards and guidelines, database management techniques and practices.
CSC 451 or CSC 453 or CSC 455 or DSC 450 is a prerequisite for this class.
CSC 457 | EXPERT SYSTEMS | 4 quarter hours
(Graduate)
A study of the development of expert systems. Students will use commercial packages to develop standalone and embedded expert systems. Topics will include rule-based systems, decision trees, forward and backward chaining, inference, reasoning with uncertainty, and intelligent agents.
CSC 403 is a prerequisite for this class.
CSC 458 | SYMBOLIC PROGRAMMING | 4 quarter hours
(Graduate)
Concepts of symbolic programming as embodied in the language LISP. Basic data and control structures of LISP: symbolic expressions, the interpreter, functions, recursion, iteration. Techniques for prototyping and building conceptually advanced systems in an environment that encourages procedural and data abstraction. Advanced topics may include Prolog, intelligent tutoring systems, intelligent agents, and natural language processing. Assignments will focus on basic AI techniques, but the class is intended for anyone who will need to rapidly develop large complex systems.
CSC 403 is a prerequisite for this class.
CSC 461 | OPTIMIZED C++ | 4 quarter hours
(Graduate)
Analysis and implementation techniques to improve the performance and resource usage of C++ programs. This class will provide low level understanding of C++'s internal behavior that can be exploited to create faster performing software. Analysis of existing software to help identify and remedy execution performance issues related to data layout, processor caching, unintended compiler interactions, algorithmic considerations, data containers and supplied subsystems. Topics include: performance enhancements through SIMD instruction set, dynamic memory usage, caching, implicit behavior, C++ language extensions, algorithms, streaming and profiling.
CSC 400 and CSC 403 and CSC 406 are prerequisites for this class.
CSC 463 | THEORY AND PRACTICE OF SAFE SYSTEMS PROGRAMMING | 4 quarter hours
(Graduate)
Modern developments in programming languages, toolchains, and package management reduce the risk of security vulnerabilities from programming errors and supply chain attacks. This course covers the theory and practice of ownership type systems, their application in systems programming, and discussion of the vulnerabilities they mitigate. Approaches to software integrity and distributed code review are investigated in the context of package management and supply chain attacks. Coursework includes development of a large systems program in a language with ownership types such as Rust.
CSC 447 is a prerequisite for this class.
CSC 464 | VIRTUALIZATION AND CLOUD COMPUTING | 4 quarter hours
(Graduate)
This course will cover underlying technologies that enable major cloud computing providers to deliver computing resources to consumers on-demand over the Internet, focusing primarily on virtualization and containers. Topics to be covered will include many aspects of the design and implementation of hypervisors and containers, ranging from isolation, namespaces, cgroups stackable file systems, copy-on-write, and scheduling of containers. Coursework includes development of a container project applying concepts learned in class and involves systems programming.
CSC 466 | PROGRAM ANALYSIS | 4 quarter hours
(Graduate)
An introductory graduate course on program analysis topics, focusing on control flow and data flow analysis, program slicing, type systems, constraint-based systems, pointer analysis, intra-procedure and inter-procedure analysis, fuzzing, symbolic execution, and applications of program analysis for addressing software and security issues.
CSC 406 is a prerequisite for this course.
CSC 468 | PROGRAMMING INTERACTIVE DATA VISUALIZATION FOR THE WEB | 4 quarter hours
(Graduate)
This course covers the fundamentals of data visualization and how to build interactive visualizations from scratch. Topics include implementing common visualizations with JavaScript and D3 (e.g. scatter plots), techniques for more complex types of data (e.g. hierarchical, geospatial, network), and adapting existing implementations of advanced visualizations to new applications. The final project involves building a custom interactive visualization with a python back-end and a D3 front-end.
SE 450 OR SE 456 OR CSC 438 OR CSC 447 is a prerequiste for this class.
CSC 471 | MOBILE APPLICATION DEVELOPMENT FOR IOS | 4 quarter hours
(Graduate)
This course introduces the core issues associated with application development for mobile devices using the iOS platform. Students will learn the Swift language, the XCode IDE, UIKit and other frameworks, the elements and architecture of the user interfaces, and more. Students will be exposed to the iOS system architecture including memory management, MVC, delegates and threads. Topics will also include understanding and handling of multi-touch events, gestures, and motion events.
CSC 472 | MOBILE APPLICATION DEVELOPMENT FOR ANDROID | 4 quarter hours
(Graduate)
This course introduces the core issues associated with application development for mobile devices using the Android platform. Students will learn the Eclipse IDE, frameworks, the elements and architecture of user interfaces, graphics, and more. Students will be exposed to the Android system architecture, including Views, Widgets, Resources, Adapters, Intents and Activities. Topics will also include understanding and handling of threads, multi-touch events, gestures, and motion events.
CSC 480 | ARTIFICIAL INTELLIGENCE I | 4 quarter hours
(Graduate)
The course provides an in-depth survey of important concepts, problems, and techniques in artificial intelligence, including heuristic and adversarial search, constraint satisfaction problems, logical reasoning, reasoning with uncertainty, and machine learning. A particular focus and a unifying theme of the course will be the notion of intelligent agents and their implementation.
CSC 403 is a prerequisite for this class.
CSC 481 | INTRODUCTION TO IMAGE PROCESSING | 4 quarter hours
(Graduate)
The course is a prerequisite for more advanced Visual Computing (VC) courses and the students will be challenged to implement VC algorithms for real world applications. The topics covered in the course include: components of an image processing system and its applications, elements of visual perception, sampling and quantization, image enhancement by histogram equalization, color spaces and transformations, introduction to segmentation (Edge detection), and morphological image processing.
CSC 412 or consent of instructor is a prerequisite for this class.
CSC 482 | APPLIED IMAGE ANALYSIS | 4 quarter hours
(Graduate)
Image analysis from classical computational imaging techniques to deep learning techniques. Fundamentals of computational image analysis in terms of image information extraction and modeling of image patterns. Specific topics include, but are not limited to: image segmentation, multi-scale representation, shape analysis, texture analysis, Fourier analysis, wavelets, Gabor and fractal analysis, and template matching. Deep learning models to extract image representations automatically. Classical and deep learning imaging techniques applied and compared in the context of different image analysis tasks such as image representation, segmentation, classification, retrieval, and object recognition. Applications of these techniques for autonomous driving, biometrics, sports analytics, smart and connected communities, and biomedical and health informatics.
CSC 481 is a prerequisite for this class.
CSC 484 | ETHICS IN ARTIFICIAL INTELLIGENCE | 4 quarter hours
(Graduate)
This course examines a broad range of ethical issues we face in a future where AI becomes increasingly integrated into modern society. Topics include subjects like AI-generated fake news, ChatGPT and the future of education, implicit bias in AI systems, the balance between benefits to society vs. rights of the individual, the lack of explanations available when life-changing decisions have been made, self-driving cars, AI replacements for professions like judges and M.D.s, military autonomous killing machines, cyborg humans, artificial intimacy, the replication crisis when AI systems are proprietary, when it is UN-ethical NOT to use AI, and the ethical issues raised by the combined intelligence of brain-machine intelligent systems. This is a lecture / discussion survey course.
CSC 485 | NUMERICAL ANALYSIS | 4 quarter hours
(Graduate)
Use of a digital computer for numerical computation. Error analysis, Gaussian elimination and Gauss-Seidel method, solution of nonlinear equations, function evaluation, approximation of integrals and derivatives, Monte Carlo methods. PREREQUISITE(S): MAT 220 and a programming course.
CSC 486 | REAL-TIME NETWORKING (FORMERLY GAM 490) | 4 quarter hours
(Graduate)
Applied real-time networking fundamentals. Topics include low-level TCP/UDP socket programming, serialization of data for network transportation, deterministic data flow and queuing in applications, dynamic configuration and session communications. Students will explore issues related to performance-based networking in different topologies: client/server and peer to peer. Students will create and build real-time applications using different protocols (TCP, UDP, RUDP) with active network simulation of loss, delayed, corrupted and out of order data packets. Architecture of different bandwidth compression and estimation techniques will be investigated. Research of wireless ad hoc networks such as Bluetooth and ZigBee will be explored.
CSC 461 and (SE 456 or SE 450) are prerequisites for this class.
CSC 489 | THEORY OF COMPUTATION | 4 quarter hours
(Graduate)
Advanced topics in the mathematical foundations of computation. Topics may include random access and Turing machines, recursive functions, algorithms, computability and computational complexity, intractable problems, NP-complete problems.
CSC 491 | MOBILE APPLICATION DEVELOPMENT FOR IOS II | 4 quarter hours
(Graduate)
This course will cover advanced topics in mobile application development for iOS. The topics covered will be made explicit by the course instructor when the course is offered.
CSC 471 is a prerequisite for this class.
CSC 492 | MOBILE APPLICATION DEVELOPMENT FOR ANDROID II | 4 quarter hours
(Graduate)
This course will cover advanced topics in mobile application development for Android. The topics covered will be made explicit by the course instructor when the course is offered.
CSC 500 | RESEARCH COLLOQUIUM | 2 quarter hours
(Graduate)
The research colloquium consists of weekly talks by a variety of speakers including faculty, students, and guests from the academic and business communities. The lectures feature new creative and scholarly works that encompass the disciplines and areas of interest of the School of Computing. Student evaluation is based on attendance as well as an online journal with reflections on each of the presentations. The educational objectives are to expose students to creative and scholarly research at DePaul and elsewhere, and to engage students in the thought process of identifying and solving challenging research problems. (variable credit)
CSC 503 | PARALLEL ALGORITHMS | 4 quarter hours
(Graduate)
Development, implementation, and applications of parallel algorithms. Models of parallel computation. Parallel sorting, searching and graph algorithms, as well as other parallel algorithms, will be studied and implemented on both simulated and actual parallel machines.
CSC 421 is a prerequisite for this class.
CSC 521 | MONTE CARLO ALGORITHMS | 4 quarter hours
(Graduate)
A course about the use of random numbers for numerical computation with particular emphasis on implementation issues and applications in science and finance. Covered topics include: pseudo random number generators, the inversion method, the accept-reject method, discrete event simulations, multi-dimensional integration, the Metropolis and the Bootstrap algorithms.
(CSC 402 or CSC 404 or DSC 430) and DSC 423 or consent of instructor are prerequisites for this class.
CSC 525 | COMBINATORIAL OPTIMIZATION | 4 quarter hours
(Graduate)
This course defines and introduces the concepts and techniques needed to formulate and model optimization problems. A set of fundamental problems in combinatorial optimization will be covered together with their applications. The emphasis will be on the design and analysis of algorithms for such problems. The computational complexity of this set of problems (easy/hard to solve/approximate) will be discussed, and techniques for coping with intractable problems will be introduced.
CSC 421 is a prerequisite for this class.
CSC 528 | COMPUTER VISION | 4 quarter hours
(Graduate)
Introduction to computer vision, including fundamentals of image formation, camera imaging geometry, feature detection and matching, stereo, and motion analysis. Basic methods and modern deep learning models for applications that include camera calibration, depth recovery from video, motion estimation and tracking, image and video, image search, and new image generation. Focus on the mathematics of these methods and models. Development of modern techniques such as convolutional neural networks for optical flow estimation and object detection, and generative adversarial networks for artificial image generation.
CSC 481 is a prerequisite for this class.
CSC 531 | INTRODUCTION TO BIOINFORMATICS | 4 quarter hours
(Graduate)
An introduction to the field of Bioinformatics, which is computational modeling of biological and biochemical processes. Some programming in Java will be involved. Little biological knowledge will be assumed: any required will be taught in the course. Topics will include genomics, biological databases, sequence alignment (longest common subsequence), phylogenetic trees, and protein folding.
CSC 421 and (SE 450 or SE 456) are prerequisites for this class.
CSC 534 | SOFTWARE DEVELOPMENT FOR LIMITED AND EMBEDDED DEVICES | 4 quarter hours
(Graduate)
This course will focus on the unique aspects, tools, and techniques of developing software applications for limited and embedded devices, such as set-top boxes and smart cards. Formerly CSC 542.
CSC 535 | FORMAL SEMANTICS OF PROGRAMMING LANGUAGES | 4 quarter hours
(Graduate)
Methods of formal semantics. Lambda-calculus. Lattices and domains. Reflexive domains. Formal semantics of the lambda-calculus. Languages with state. Interpretation functions. Expressions and environments. Command and stores. Control structures and continuations.
CSC 447 is a prerequisite for this class.
CSC 536 | DISTRIBUTED SYSTEMS II | 4 quarter hours
(Graduate)
Advanced course that introduces the techniques required to build large-scale, highly available, fault tolerant distributed systems. Covers the distributed algorithms (e.g., vector clocks, consistent hashing, gossip protocols, Merkle trees, Paxos/Raft algorithms) that solve the fundamental problems (e.g., synchronization, replication and replica consistency, fault tolerance) in building such systems. Focus is on problems and solutions relevant to systems that store and process massive data sets and the design decisions behind current large-scale distributed database systems.
CSC 435 is a prerequisite for this class.
CSC 538 | VISION SYSTEMS | 4 quarter hours
(Graduate)
Vision Systems will cover the geometry of computer vision as well as a survey of working vision systems to include 1) Content-based Image Retrieval Systems; 2) Object Detection and Tracking Systems; 3) Medical Visual Systems; 4) Robotic Navigation Systems.
CSC 528 is a prerequisite for this class.
CSC 540 | MOBILE APPLICATION DEVELOPMENT II | 4 quarter hours
(Graduate)
This course will cover advanced topics in mobile and wireless application development. The topics covered will be made explicit by the course instructor when the course is offered.
CSC 471 is a prerequisite for this class.
CSC 543 | SPATIAL DATABASES & GEOGRAPHIC INFORMATION SYSTEMS | 4 quarter hours
(Graduate)
This course considers how spatial databases work within a GIS, how data is structured, stored, indexed, retrieved, and displayed. Other topics may include fuzzy spatial databases, temporal spatial databases, and multiple criteria spatial decision making. The class will consist of hands-on work with commercial products, as well as investigating the state of-the art research in the field. Prerequisites: CSC 453 or CSC 455.
CSC 453 or CSC 455 or DSC 450 is a prerequisite for this class.
CSC 547 | ADVANCED TOPICS IN PROGRAM LANGUAGES | 4 quarter hours
(Graduate)
A project-based course on advanced topics related to programming languages and programming environments. The course does not have any formal exams or homework assignments, but participants are expected to read papers on current research, actively participate in discussions, and complete a significant course project. PREREQUISITE(S): Instructor consent required.
CSC 548 | ADVANCED COMPILER DESIGN | 4 quarter hours
(Graduate)
Emphasis on practical problems in implementing compilers, data flow analysis, code optimization, error analysis. Discussion of compiler generators. As a class project, students will write a compiler.
CSC 448 is a prerequisite for this class.
CSC 549 | DATABASE SYSTEM IMPLEMENTATION | 4 quarter hours
(Graduate)
This is an advanced database course that covers issues in DBMS implementation. Topics covered in this course include: physical data organizations, indexing and hashing, query processing and optimization, database recovery techniques, transaction management, concurrency control, and security.
CSC 453 is a prerequisite for this class.
CSC 550 | OBJECT-ORIENTED DATABASES | 4 quarter hours
(Graduate)
(No Longer Offered) Introduction to object-oriented concepts: abstract data typing, inheritance, object identity. Architecture, modeling and design for object-oriented databases. Query languages, integrity, long-duration transactions, concurrency, recovery and versioning in object-oriented databases. Brief survey of commercial and research prototypes of object-oriented database management systems.
CSC 453 is a prerequisite for this class.
CSC 551 | DISTRIBUTED DATABASE SYSTEMS | 4 quarter hours
(Graduate)
Distributed database architecture, distributed database design, distributed query processing, query decomposition and optimization of distributed queries, distributed transaction management and concurrency control, distributed DBMS reliability, distributed database operating systems. Distributed multidatabase systems. Client/Server database systems.
CSC 453 and (CSC 435 or NET 405 or NET 463) are prerequisites for this class.
CSC 552 | CONCURRENT SOFTWARE DEVELOPMENT | 4 quarter hours
(Graduate)
Fundamentals and techniques of developing concurrent object-oriented applications, using a patterns-based approach. Concepts covered include: threads, synchronization and object locking, thread blocking and deadlock, safety and liveness, state-dependent action and concurrency control. Formerly SE 552.
(SE 450 or SE 456) and CSC 407 are prerequisites for this class.
CSC 553 | ADVANCED DATABASE CONCEPTS | 4 quarter hours
(Graduate)
An introduction to advanced selected topics in databases. The topics include: intelligent and deductive databases, temporal databases, multimedia databases, spatial and geographic databases, fuzzy databases, mobile databases, data mining and data warehousing, as well as emerging issues and concepts in database design, implementation and management.
CSC 453 is a prerequisite for this class.
CSC 554 | ADVANCED DATABASE MANAGEMENT | 4 quarter hours
(Graduate)
In this class, we will discuss concepts, technologies, guiding principles, processes and best practices in managing database environment to meet high availability, scalability, and compliance needs. Organizations with business critical applications must reduce their risk of downtime, manage database environment efficiently and ensure data meets compliance requirements effectively. IT now has additional responsibilities to secure and manage information in alignment with legal, records management and regulations. This class explores methods and techniques to achieve the availability needs and also focuses on how to protect the database against disasters by maintaining multiple copies of the databases in separate locations, synchronized in real-time. Students learn to design and manage key business resumption functions including disaster recovery plans and business continuity plans. Data governance challenges will be discussed along with solutions including data life cycle management, preservation, retention, and disposition.
CSC 555 | MINING BIG DATA | 4 quarter hours
(Graduate)
Introduction to fundamentals of distributed file systems and map-reduce technology (e.g., Hadoop); tuning map-reduce performance in a distributed network. Algorithms and tools for mining massive data sets and discussion of current challenges. Applications in clustering, similarity search, classification, data warehousing (e.g., Hive), machine learning (e.g., Mahout).
(CSC 453 or DSC 450) and (DSC 441 or CSC 480) or (MAT 491 and MAT 449) are prerequisites for this class.
CSC 557 | FOUNDATIONS OF COMPUTER SECURITY | 4 quarter hours
(Graduate)
This course provides an overview of foundational techniques in the specification and verification of computer systems in the presence of malicious attackers. Topics may include: formal models of interaction, attacker models, robust safety properties such as confidentiality and authenticity, information flow properties such as noninterference, and tools such as model checkers, type checkers and theorem provers.
CSC 439 is a prerequisite for this class.
CSC 559 | SOFTWARE ENGINEERING FOR FINANCIAL MARKETS | 4 quarter hours
(Graduate)
This course focuses on software engineering issues in creating a financial engine that drives automation and execution in a financial market. The course will cover different types of financial engines from back-office to front-office, exchange matching engines, data gathering engines, trading engines and straight through processing. The emphasis will be on the engines themselves rather than the financial models beneath them. Students will be required to work individually and/or in teams and create a financial engine. This is a project course and it will put students in the role of a domain architect who will need the skills required to communicate with financial traders and software engineers at the same time.
CSC 404 and (CSC 431 or CSC 521 or CSC 425 or DSC 425) are prerequisites for this class.
CSC 562 | OPTIMIZED C++ MULTITHREADING | 4 quarter hours
(Graduate)
Software architecture of applied C++ concurrency and multithreading fundamentals. Basic threading concepts: process model, threads, stacks, fibers, mutexes, semaphores, atomics and events. Leveraging advanced C++ language features relating to the memory model and the threading support in large multithreaded architectures. Architecting lock-based and lock-free concurrent data structures in applications. Designing a threaded management system to control the access and reuse of threads in applications. Designing multithreaded architecture for real-time performance.
(SE 450 or SE 456) and CSC 461 are prerequisites for this class.
CSC 575 | INTELLIGENT INFORMATION RETRIEVAL | 4 quarter hours
(Graduate)
Examination of the design, implementation, and evaluation of information retrieval systems. The focus is on the underlying retrieval models, algorithms, and system implementations. Also examined is how an effective information search and retrieval is interrelated with the organization and description of information to be retrieved. Topics include: automatic indexing; thesaurus generation; Boolean, vector-space, and probabilistic models; clustering and classification; information filtering; distributed IR on the WWW; intelligent information agents; IR system evaluation; information visualization; and natural language processing in IR. Throughout the course, current literature from the viewpoints of both research and practical retrieval technologies both on and off the World Wide Web will be examined.
CSC 403 (or Data Science MS students)
CSC 576 | COMPUTATIONAL ADVERTISING | 4 quarter hours
(Graduate)
Computational advertising is the problem of finding the best advertisement for a given user in a given on-line context. It is a complex and emerging area at the intersection of quantitative marketing, web search, data mining, recommendation, optimization, and algorithmic game theory. Students will read current scientific papers and explore a range of models both mathematically and empirically. Students can choose from three types of final course projects: implementation projects, research papers, or data analysis projects.
IS 467 or DSC 441 or CSC 478 or ECT 584 or DSC 484 is a prerequisite for this class.
CSC 577 | RECOMMENDER SYSTEMS | 4 quarter hours
(Graduate)
Recommender systems offer personalized access to online information in product catalogs, social media networks, and document collections, among other applications. This class will introduce students to a range of approaches for building recommender systems including collaborative, content-based, knowledge-based, and hybrid methods. Students will implement recommendation algorithms using an open-sourced toolkit and conduct experimental evaluations.
(CSC 412 and (CSC 478 or DSC 478)) or (CSC 403 and (IS 467 or DSC 441)) are the prerequisites for this class..
CSC 578 | NEURAL NETWORKS AND DEEP LEARNING | 4 quarter hours
(Graduate)
Course focuses on the algorithms, implement, and application of neural networks for learning about data. It will present how neural networks represent data and learn in supervised and unsupervised contexts with applications to language processing, classification, and regression problems. Topics include learning algorithms, and optimization methods, deep learning methods for deriving deep representations from surface features, recursive networks, Boltzmann machines and convolutional networks.
CSC 412 and (DSC 478 or CSC 480) are prerequisites for this class.
CSC 580 | ARTIFICIAL INTELLIGENCE II | 4 quarter hours
(Graduate)
The course provides an in-depth coverage of advanced concepts and techniques in artificial intelligence. The topics include advanced concepts in optimization; Markov decision processes; reinforcement learning; and advanced machine learning techniques such as support vector machines, kernel regression, ensemble classification, spectral and density-based clustering, and multi-layer neural networks. These topics will be explored in the context of modern intelligent applications such as recommender systems, text and natural language processing, chat bots, and image recognition.
CSC 578 is a prerequisite for this class.
CSC 583 | NATURAL LANGUAGE PROCESSING | 4 quarter hours
(Graduate)
This course introduces the fundamental concepts and theory of Natural Language Processing (NLP) and computational linguistics. NLP is a field in Artificial Intelligence devoted to creating computer systems which understand and produce human languages. Topics include language models, sentiment analysis, parsing, information extraction and neural language models. The course will explore the theoretical aspects of these topics and their practical implementations through case studies and projects.
CSC 578 is a prerequisite for this class.
CSC 587 | COGNITIVE SCIENCE | 4 quarter hours
(Graduate)
A study of the relationships between our knowledge of human and computer intelligence. Levels of analysis of intelligent system, examples of cognitive models, and exposure to current publications, with an emphasis on those related to human computer interaction. Students will participate in the design and testing of models of human intelligence, both experimentally and using computer models.
CSC 588 | REAL-TIME MULTITHREADED ARCHITECTURE | 4 quarter hours
(Graduate)
Real-time constrained multithreaded architecture. Topics include multithreaded handle development, inter-thread communication, creating systems for user-defined callbacks, asynchronous loading and streaming of resources, non-blocking threading synchronization, design patterns and data driven messaging with time delivery constraints. Design and implementation of thread safe data management with atomic non-blocking synchronization. Exploration of real-time data driven messaging to allowing the run-time object data to control the behavior an application. Students will design, develop and implement a multithreaded real-time application (i.e. Audio engine) that integrates existing single and multithreaded middleware libraries.
CSC 461 and (SE 456 or SE 450) are prerequisites for this class.
CSC 589 | TOPICS IN DATABASE | 2-4 quarter hours
(Graduate)
Specific topics will be selected by the instructor and may vary with each quarter. Can be repeated for credit. Variable credit. PREREQUISITE(S): For specific prerequisites, see syllabus or consult with course instructor. (variable credit)
CSC 590 | TOPICS IN USER INTERFACES | 2-4 quarter hours
(Graduate)
Specific topics will be selected by the instructor and may vary with each quarter. Can be repeated for credit. Variable credit. PREREQUISITE(S): For specific prerequisites, see syllabus or consult with course instructor. (variable credit)
CSC 591 | TOPICS IN ALGORITHMS | 2-4 quarter hours
(Graduate)
Specific topics will be selected by the instructor and may vary with each quarter. Can be repeated for credit. Variable credit. PREREQUISITE(S): For specific prerequisites, see syllabus or consult course instructor. (variable credit)
CSC 592 | TOPICS IN COMPUTER VISION AND PATTERN RECOGNITION | 4 quarter hours
(Graduate)
This is an independent study course. May be repeated for credit. PREREQUISITE(S): CSC 482 or CSC 528.
CSC 594 | TOPICS IN ARTIFICIAL INTELLIGENCE | 2-4 quarter hours
(Graduate)
Specific topics will be selected by the instructor and may vary with each quarter. Can be repeated for credit. Variable credit. PREREQUISITE(S): For specific prerequisites, see syllabus or consult course instructor. (variable credit)
CSC 595 | TOPICS IN COMPUTER SCIENCE | 2-4 quarter hours
(Graduate)
Specific topics will be selected by the instructor and may vary with each quarter. Can be repeated for credit. Variable credit. PREREQUISITE(S): For specific prerequisites, see syllabus or consult course instructor. (variable credit)
CSC 598 | TOPICS IN DATA ANALYSIS | 2-4 quarter hours
(Graduate)
Specific topics will be selected by the instructor and may vary with each quarter. Can be repeated for credit. Variable credit. PREREQUISITE(S): For specific prerequisites, see syllabus or consult course instructor. (variable credit)
CSC 599 | INDEPENDENT STUDY | 1-8 quarter hours
(Graduate)
Independent study supervised by an instructor. Independent study form required. Can be repeated for credit. Variable Credit.
CSC 601 | MASTER'S RESEARCH CONTINUATION | 0 quarter hours
(Graduate)
Non-credit. This course is intended for master's degree students who have completed all course registration requirements and who are regularly using the facilities of the University for study and research, thesis or project completion. These students are required to be registered in this course each quarter of the academic year until all requirements have been completed. PREREQUISITE(S): Completion of required courses. Independent Study form required. (0 credit hours)
CSC 675 | CAPSTONE IN ARTIFICIAL INTELLIGENCE | 4 quarter hours
(Graduate)
The course provides an opportunity for students to apply the skills and knowledge learned in the classroom to real world challenges. Students work in teams to implement an AI empowered solution to a critical problem. Students will also read scientific papers in the field to review and compare related work. At the end of the course, students submit a report summarizing their approach and describing the intelligent information system they developed.
CSC 580 and CSC 578 and CSC 583 are prerequisites for this class.
CSC 690 | RESEARCH SEMINAR | 1-4 quarter hours
(Graduate)
Readings and discussion on current research topics. PREREQUISITE(S): Consent of the instructor. (variable credit)
CSC 695 | MASTER'S RESEARCH | 1-4 quarter hours
(Graduate)
Students interested in a more in-depth study of a particular area will register for this course and work with a faculty member (not necessarily their academic advisor) on a research project. The work involved may include system development, empirical studies, or theoretical work. 4 credit hours of CSC 695 replaces one 500level elective course in student's degree program. This course can be taken for 1-4 credit hours for up 8 credit-hours. PREREQUISITE(S): Consent of research advisor. Independent study form required. Students must successfully complete the foundation courses prior to their first enrollment in CSC 695. (variable credit )
CSC 696 | MASTER'S RESEARCH | 0 quarter hours
(Graduate)
A student who has made a significant contribution to a research project, through work done in 8 credit-hours CSC 695, may choose to complete the Master's Research option. During the second of the two quarters, the student must submit a technical report detailing the results of the research project. This report must be approved by the student's research supervisor and the faculty advisor, at which point it will be made available to the public as a CDM Departmental Master's Research Technical Report. The transcript will show the Research project title as the course topic.
CSC 697 | GRADUATE INTERNSHIP | 1-4 quarter hours
(Graduate)
In cooperation with local employers, the graduate program offers students the opportunity to integrate their academic experience with on-the-job training in computer related work areas. This course is variable credit and may be taken for one to four credits. This course may be repeated for a maximum of four credits total. Admission to the internship program requires consent of the Instructor and a Student Services Advisor. International students may complete curricular practical training (CPT) through this class provided they first obtain CPT authorization from the Office for International Students and Scholars (OISS) before beginning the internship. (1 quarter hour)
CSC 698 | MASTER'S THESIS | 0 quarter hours
(Graduate)
A student who has made an original contribution to the area (typically through 8 credit-hours' worth of work done in CSC 695, but not necessarily) may choose to complete a Master's Thesis. The student and the student's research advisor form a Master's Thesis Committee. The student submits to the committee a thesis detailing the original results of the research project. After a public defense, the committee will decide whether to accept the thesis. In that case, the student will be allowed to register for this course and the transcript will show the thesis title as the course topic. PREREQUISITE(S): Successful defense of a Master's Thesis. (variable credit)
CSC 699 | RESEARCH | 1-12 quarter hours
(Graduate)
PREREQUISITE(S): Research course supervised by an instructor. Independent Study Form required. Variable credit. Can be repeated for credit. (variable credit)
CSC 701 | FULL-TIME CANDIDACY CONTINUATION | 0 quarter hours
(Graduate)
Non-credit. Students in the doctoral degree who have completed their course credit requirements are required to be registered each quarter of the academic year until the exams, dissertation and final examination have been completed. Registration through independent study form requires certification that the student is actively working on exams and/or thesis under the advisor's supervision. This course carries the equivalent of full-time enrollment status.
CSC 702 | PART-TIME CANDIDACY CONTINUATION | 0 quarter hours
(Graduate)
Non-credit. Students in the doctoral degree who have completed their course credit requirements are required to be registered each quarter of the academic year until the exams, dissertation and final examination have been completed. Registration through independent study form requires certification that the student is actively working on exams and/or thesis under the advisor's supervision. This course carries the equivalent of part-time enrollment status.