Computer Science

Master of Science in Computer Science

Program Description

The Master of Science in Computer Science (MS in CS) program offers a multidisciplinary and in-depth understanding of the core and advanced topics in the rapidly growing and exciting field of computer science, while placing equal emphasis on theory and practice to prepare students for top professional positions. Students must take the following:

COURSE DESCRIPTIONS

CS 500: Object-Oriented Design and Analysis (4 units)

This course provides an introduction to programming practice using a modern programming language. Analysis and formulation of problems for computer solution. Systematic design, construction, and testing of programs. There will be a few substantial programming assignments. Students will learn object-oriented programming, classes and data hiding, dynamic object construction and destruction, derived classes and inheritance, virtual functions; functions, call by value/reference, overloading; abstract data types; standard template libraries; exception handling; introduction to UNIX, file processing, process management.

CS 501: Algorithms and Data Structures for Applications (4 units)

This course provides an introduction to some fundamental algorithms and data structures used in current applications. Examples include cryptocurrencies (hashing, Merkle trees, proofs of work), AI (nearest neighbor methods, k-d trees, autoencoders), and VR/AR (gradient descent, least squares, line-drawing algorithms). Programming assignments will be in Python or Java.

CS 502: Machine Learning (4 units)

In this course you will learn and apply key concepts of modeling, analysis and validation from Machine Learning, Data Mining and Signal Processing to analyze and extract meaning from data. Implement algorithms and perform experiments on images, text, audio and mobile sensor measurements. Gain working knowledge of supervised and unsupervised techniques including classification, regression, clustering, feature selection, association rule mining, and dimensionality reduction.

CS 503: Blockchains, Cryptocurrencies, and Smart Contracts (4 units)

Viewed variously as a niche currency for online criminals and a technological threat to the financial industry, Bitcoin has fueled mythmaking, financial speculation, and real technological innovation. We will study both Bitcoin and the technological landscape it has inspired and catalyzed. Topics will include: the mechanics of consensus algorithms, such as Proof of Work and Byzantine Consensus, and their role in blockchains and cryptocurrencies; cryptographic tools employed in cryptocurrencies, including digital signatures algorithm and zero-knowledge proofs; the evolution and mechanics of Bitcoin and its ecosystem; smart contracts; and special topics, such as trusted hardware in blockchain-based systems, smart contracts and real-world contract law, and cryptocurrencies and crime.

CS 504: Learning and Decision Making (4 units)

This course covers the analysis of data for making decisions with applications to electronic commerce, AI and intelligent agents, business analytics, and personalized medicine. The focus will be on learning good and automated decision policies, inferring causal effects of potential decisions, and interactive and intelligent systems that learn through acting and act to learn. Topics include A/B testing, sequential decision making and bandits, decision theory, risk minimization and generalization, Markov decision processes, reinforcement learning, analysis of observational data, instrumental variable analysis, and algorithmic fairness of personalized decision policies. 

CS 505: Developing and Designing Interactive IoT Devices (4 units)

This course provides an introduction to the human-centered and technical workings behind interactive devices ranging from cell phones and video controllers to household appliances and smart cars. This is a hands-on, lab-based course. For the final project, students will build a functional IoT prototype of their own design, using Javascript, single-board Linux computer, embedded microcontrollers, and other electronics components. Topics include electronics prototyping, interface prototyping, sensors and actuators, microcontroller development, physical prototyping and user testing.

CS 506: Data Management and Information Processing (4 units)

This course will teach students to how organize and analyze real-world data sets using tools that are most commonly used in the business world.  In particular, students will learn the SQL language for analyzing data in relational databases.  Students will also learn the details of common data encodings (integer, floating point, fixed point, text, date and time), how such data are structured in data files (CSV, JSON, XML), and how to model complex data sets as a series of SQL tables.  In other words, students will learn how to organize large data sets, and to answer questions using that data. 

CS 507: Operating Systems Design (4 units)

This course will provide an overview of operating systems designs and issues. Topics covered include: Operating system structures, processes, process synchronization, deadlocks, CPU scheduling, memory management, file systems, secondary storage management. Students will be required to create a couple of substantial programming projects that work with operating systems concepts and designs.

CS 508: Web Application Development (4 units)

With the growing importance of the web and services supported through the web, web programming is fast becoming the standard programming model for enterprise applications.  The course equips students with resources for design, production, and evaluation of web applications and strategies for locating these resources. Students will be introduced to some of the industry best practices in building scalable web applications using popular web application frameworks such as Ruby on Rails, Groovy on Rails (GRAILS) and Django.

CS 509: Computer Networks (4 units)

An introduction to the design and analysis of computer communication networks. Topics include application layer protocols, Internet protocols, network interfaces, local and wide area networks, wireless networks, bridging and routing, and current topics.

MOBILE APP DEVELOPMENT CONCENTRATION

MOB 600: Introduction to Mobile Programming (4 units)

This course provides an introduction to the development of software for devices including smart phones, tablets, handheld units, and other general-purpose computing platforms. Topics include, mobile application development frameworks; Architecture, design and engineering issues, techniques, methodologies for mobile application development. 

MOB 601: Android Programming (4 units)

This course guides students in how to program using Java and apply this knowledge to Android Platform in smart phones. Students will learn the general theme of software engineering for all topics. Another objective of this course is to provide students an environment to experience the life-cycle of Mobile Application software development.

MOB 602: iOS Programming (4 units)

This iOS programming class explores programming techniques using Apple’s new language Swift. Students will also be exposed to the Objective-C programming language. Students will learn to develop applications that can be run on Apple’s iPhones and iPads. The course will use the Model-View-Controller (MVC) framework to develop iOS Apps. Students will use XCode to develop their iOS Apps which will require using a Mac OS computer.

DATA ANALYTICS CONCENTRATION

DATA 600: Business & Data Analytics (4 units)

This course will introduce the basic concepts of data analytics as applied in various business contexts. After introducing the basic concepts, students will build on these foundations to explain and explore data analytics techniques from the ground up to access, cleanse, and visualize data to construct models and predict outcomes.

DATA 601: Business Intelligence & Data Mining (4 units)

Students will learn the fundamentals of data architecture for business decision making. Topics include fundamentals of data integration, data warehousing and data lakes, data visualization and business performance management. The course introduces contemporary tools such as Google fusion tables and Microfocus dashboards.

DATA 602: Big Data (4 units)

This course introduces the students to the world beyond SQL and the concept of Big Data (structured and unstructured), its characteristics, and the existing and emerging ecosystems. Students will address the challenges of managing and handling big data in a business or organizational context, as well as the larger cultural and ethical implications. Students will learn about NoSQL databases, and how to use existing and emerging software tools such as Hadoop for data access, manipulation and reporting.

DIGITAL MEDIA AND ART CONCENTRATION

DMA 600: Digital Arts and Media (4 units)

This course introduces fundamental features of digital media and examines the immense visual, social, and psychological impact of the “digital revolution” on our culture. Topics include the concepts and forms of the digital hypertext interface, Internet, and web, and the impact of digital media on conceptions of the self, body, identity, and community.

DMA 601: Visual Communications (4 units)

This course will explore how we see and use visuals to communicate information. Students will develop critical and creative thinking skills in applying concepts of basic design principles. Students will apply the concepts with hands-on and analysis assignments. These concepts will then be applied to design for advertising, print, multimedia, web design and 3-D design. The business of design will also be covered with emphasis on client relations, estimates, billing, and planning.

DMA 601: Production Fundamentals (4 units)

This course provides an introduction to theory and technique in audio, video, and film. Several team projects will provide a fundamental production orientation in each medium as well as provide the environment to discuss goals and objectives of production.

INTERNSHIP EXPERIENCE

INT 900: Internship (4 units)

The course is to provide opportunities for students to relate the internship experience to the knowledge that has gained through classroom instruction. An internship should provide the student with hands-on experience and a good sense of what an actual job in the organization will be like. One hundred twenty (120) hours of internship work is required for completion of this class. Students will be expected to analyze the effectiveness of their internship experience. Employer validation and performance reporting will also be required. Academic work generally includes, but is not limited to, one ten to twelve-page report paper. The course may be repeated three (3) times for a maximum of twelve (12) credithours.

Download Program Curriculum