Course Requirements 

6 Major Electives chosen from the list below (at least 4 of which must be from the list of advanced courses):

Introductory Major Field Courses

Advanced Major Field Courses

Artifi cial Intelligence

Computational Sciences

Computer Game Development

Computer Graphics

Computer Networks

Computer Systems

Computer Vision

Data Analysis and Data Mining

Data Storage

Human-Computer Interaction

Security

Software Engineering

Theory of Computation

Web Development

Open Electives

Open elective credit also is required to meet the minimum graduation requirement of 192 hours.

 

MAT 140

DISCRETE MATHEMATICS I

Combinatorics, graph theory, propositional logic, singly-quantified statements, operational knowledge of set theory, functions, number systems, methods of direct and indirect proof.
Prerequisites:
MAT 130 or above or equivalents or placement by test is a prerequisite for this class.

CSC 241

INTRODUCTION TO COMPUTER SCIENCE I

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. PREREQUISITE(S): MAT 130 or Mathematics Diagnostic Test placement into MAT 140.

CSC 242

INTRODUCTION TO COMPUTER SCIENCE II

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. PREREQUISITE(S): CSC241

CSC 299

SOPHOMORE LAB IN APPLIED COMPUTING

In this course, students investigate a particular application of computing. Students learn tools, methodologies, and formalisms used in 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. PREREQUISITE(S): CSC 242

CSC 300

DATA STRUCTURES IN JAVA I

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. 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. Prerequisite(s): CSC 242 or CSC 243

CSC 301

DATA STRUCTURES IN JAVA II

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, data structures supporting disjoint-set operations, 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. Prerequisite(s): CSC 300

CSC 321

DESIGN AND ANALYSIS OF ALGORITHMS

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. PREREQUISITE(S): (CSC 301 or CSC 383 or CSC 393) and MAT140. MAT141 Recommended.

CSC 348

INTRODUCTION TO COMPILER DESIGN

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. PREREQUISITE(S): (CSC 301 or CSC 383 or CSC 393) and CSC 373

CSC 355

DATABASE SYSTEMS

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. PREREQUISITE(S): (CSC 301 or CSC 383 or CSC 393) and CSC 373

CSC 373

COMPUTER SYSTEMS I

A 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. PREREQUISITE: ((CSC 383 or CSC 393 or CSC 301) and Math 140) or (CSC 224 or CSC 261 or CSC 309 ) and graduate standing.)

CSC 374

COMPUTER SYSTEMS II

A 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. PREREQUISITE: CSC373

CSC 376

DISTRIBUTED SYSTEMS

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. PREREQUISITE(S): (CSC 301 or CSC 383 or CSC 393) and CSC 374.

CSC 394

SOFTWARE PROJECTS

Students will be provided with experience in team design, implementation and testing of a large software project. PREREQUISTE(S): CSC 301 or CSC 383 or CSC 393 or IM 360

INTC 220

PUBLIC SPEAKING (Formerly CMNS 220)

Introduction to the skills required in a variety of public speaking settings. Includes units on delivery, language, defining speech purposes and content, finding supporting material, organization, and audience analysis. Students will be required to present speeches. Background in basic writing and library skills is necessary. (Formerly CMNS 220)

IT 223

DATA ANALYSIS

(FORMERLY CSC 323) Application of statistical concepts and techniques to a variety of problems in IT areas and other disciplines, using a statistical package for simple data analysis. Course topics include descriptive statistics, elementary probability rules, sampling, distributions, confidence intervals, correlation, regression and hypothesis testing. PREREQUISITE(S): MAT 130 or placement

MAT 141

DISCRETE MATHEMATICS II

Methods of direct and indirect proof, set theoretic proofs, sequences, mathematical induction, recursion, multiply-quantified statements, relations and functions, complexity.
Prerequisites:
MAT 140 is a prerequisite for this class.

SE 350

OBJECT-ORIENTED SOFTWARE DEVELOPMENT

Principles, techniques and tools of object-oriented modeling, design, implementation, and testing of large-scale software systems. Topics include design patterns, application frameworks, architectural design, and the applications in the software development process to improve the extensibility, maintainability, and reliability of software systems. PREREQUISITE(S): CSC 301 or CSC 383

WRD 204

TECHNICAL WRITING (FORMERLY ENG 204)

In this course, students learn to communicate and interpret specialized information for readers' practical use. The course highlights the action-orientated goals of technical writing and the importance of accurately communicating information to users. The course provides an overview of key issues related to technical writing such as usability, audience analysis, designing pages and screens, effective collaboration with peers, interpreting and presenting data, and writing clearly and persuasively. Students learn to write, revise and present common technical writing genres such as instructions, tutorials, manuals, reports, product/process descriptions, proposals, and oral presentations. Formerly ENG 204.

CSC 309

C++ FOR PROGRAMMERS

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. PREREQUISITE(S): CSC 242 or CSC 243 or CSC 224 or proficiency in another programming language.

CSC 233

CODES AND CIPHERS

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. PREREQUISTE: LSP 120.

CSC 235

PROBLEM SOLVING

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.

GAM 244

GAME DEVELOPMENT I

This course provides students additional theory and practice with an emphasis on game design and storytelling for games. Students continue learning about game development processes and techniques and how to apply advanced game design principles to create components of a 2D game.

GAM 245

GAME DEVELOPMENT II

This course emphasizes 3D game production. Students apply advanced 3D game design development principles to create deliverables for 3D games. Students will work with an existing game engine and content pipeline. The focus of the class will be on the creation and use of different types of content, key development issues, process management, and professional practices. PREREQUISITE(S): GAM 244 or CSC 241 or CSC 243

ISM 210

INTRODUCTION TO HUMAN-COMPUTER INTERACTION

This course familiarizes students with the user interface development process, including user and task analysis, interaction design, prototyping and evaluation. Students study human perception, cognition and motor abilities as they relate to the design of interactive systems. In a series of projects, students design and revise prototypes as they apply a user-centered design process. Emphasized topics include user profiles, information architecture and usability testing. Students provide written analysis of their research and process. Formerly IM 210. PREREQUISITE(S): None

IT 130

INTRODUCTORY COMPUTING FOR THE WEB

An introduction to the Internet, the World Wide Web, and web development for students with a strong interest in technology. Students will create interactive web pages by writing HTML and CSS and by programming in JavaScript. Topics include the origins of the web, the roles and operations of web browsers and web servers, interacting with web applications through forms, and using style sheets to separate document structure and document formatting. PREREQUISITE(S): NONE.

IT 231

WEB DEVELOPMENT I

Introduction to framework-based web development. Students create interactive, dynamic web sites using a common web architecture and object-based database access. Programming for web development includes control structures, objects, functions, and use of composite data types. Prerequisite: IT 130

IT 232

WEB DEVELOPMENT II

Intermediate framework-based web development. Students design and develop web applications supporting social-networking, content-sharing and functionality for business and organizational needs. Web concepts include AJAX, server-side caching, security threats. Application of object-oriented concepts. PREREQUISITE(S): IT 231 and IT 211

IT 263

APPLIED NETWORKS AND SECURITY

This course introduces the networking and security technologies required to build and maintain a home or small-office network. Networking topics will include client/server application software configuration, network connectivity (cabling, switch and router configuration), basic IP addressing, network address translation and options for public Internet access services. Security topics will include typical threats and responses, firewalls, host hardening, password management and virtual private network (VPNs). The course has a lab component where students apply wired and wireless technologies to design and administer a small network with various applications. PREREQUISITE(S): none

MAT 150

CALCULUS I

Limits, continuity, the derivative, rules of differentiation, applications of the derivative, extrema, curve sketching, and optimization. This course meets for an additional 1.5-hour lab session each week for enrichment and problem solving.
Prerequisites:
MAT 131 or placement by test is a prerequisite for this class.

MAT 151

CALCULUS II

Definite and indefinite integrals, the Fundamental Theorem of Calculus, applications of the integral, exponential and logarithmic functions, inverse trigonometric functions, techniques of integration. This course meets for an additional 1.5-hour lab session each week for enrichment and problem solving.
Prerequisites:
MAT 150 or MAT 160 or MAT 170 is a prerequisite for this class.

CSC 357

EXPERT SYSTEMS

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. PREREQUISITE(S): CSC 301 or CSC 383 or CSC 393.

CSC 358

SYMBOLIC PROGRAMMING

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. PREREQUISITE(S): CSC 301 or CSC 383 or CSC 393.

CSC 380

FOUNDATIONS OF ARTIFICIAL INTELLIGENCE

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 graduate and advanced undergraduate 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. PREREQUISITE(S): CSC 301 or CSC 383 or CSC 393.

CSC 331

SCIENTIFIC COMPUTING

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. PREREQUISITE(S): (CSC 212 or CSC 262 or CSC 224 or CSC 300) , and 2 course calculus sequence or instructor's permission.

GAM 350

PHYSICS FOR GAME DEVELOPERS

The course concentrates on Newton's Laws of Motion, kinematics and kinetics. This theory will be applied to problems that a game programmer must understand e.g. collisions between objects, projectiles and their trajectories, real-time simulation of motion. Special objects such as cars, aircraft and ships will be discussed. Students will apply and implement laws of physics. PREREQUISITE(S): (CSC 301 or CSC 383 or CSC 393) and MAT 150

GAM 374

FUNDAMENTALS OF GAME PROGRAMMING I

Fundamental concepts of game programming using C/C++ and OpenGL. Students will learn how to implement simple 3D action games: 3D rendering operations including texture mapping, physical interactions including collisions, input / output management including game UI, analog controllers, and sound. Emphasis will be placed on the development of the coding skills needed for robust, efficient, and portable implementation. PREREQUISITE(S): (CSC 393 or (CSC 309 and CSC 301)) and GPH 321

GAM 376

ARTIFICIAL INTELLIGENCE FOR COMPUTER GAMES

Artificial Intelligence (AI) is one of the essential components of a computer game. The course introduces basic concepts of AI. Emphasis will be place on applications of AI in various genres of computer games. In the implementation component of this course students will be exposed to the existing AI game engines (middleware), which contain implemented AI algorithms that are ready to be applied into game code. These algorithms include: decision trees, pathfinding, neural networks, script-driven game object behaviors. PREREQUISITE(S): CSC 301 or CSC 383 or CSC 393

GAM 378

STRATEGY GAMES PROGRAMMING

Turn-based and real-time strategy games. Abstract strategy games such as chess, backgammon, and bridge. Game themes and presentation of fantasy, historical and futuristic gaming scenarios. Ethically responsible content and social impact of different cultures, ethnicities, genders on the game play and game audience will be addressed. Game-player resource management. Implementation of strategy engines, 2D presentation and isometric projection. PREREQUISITE(S): GAM 376

GAM 380

CONSOLE GAME DEVELOPMENT ENVIRONMENTS

Specialized computers for games with high-end graphics and sound capabilities and other specialized input output devices form one of the largest game markets. In this advanced programming course students will gain hands-on experience writing and porting code for game consoles. PREREQUISITE(S): CSC 393 and CSC 374.

GAM 382

SERIOUS GAMES

Explores the role of computer games and simulations for education and training. Topics include: overview of the science of learning, analysis of games for different purposes and types of content, assessment of learning, and learning through game creation. Students will design, implement, and evaluate a serious game. Development of socially responsible and ethical behaviors will be a primary objective. PREREQUISITES(S): GAM 245

GAM 353

TOOL PROGRAMMING FOR GAME DEVELOPMENT

Today's games are built with large amounts of data. The stability, usability, efficiency, and flexibility of the tools that process game data plays an enabling and critical role in game development. Topics include the content pipeline, processing or standard file formats, integration of external tools, file format design, command line and graphical user interfaces, and procedural content generation. PREREQUISITE(S): CSC 373

GAM 386

GAME PROGRAMMING FOR MOBILE DEVICES

In this course we introduce major mobile hardware platforms and their operating systems. Issues related to game design for handheld devices will be presented. The strong technical component of this course includes game programming for a handheld device with a wireless internet connection enabling multiplayer game architecture. Such concepts as: building a custom game library, multiplayer game programming, infrared, wireless and socket communication between devices will be discussed. PREREQUISITE(S): CSC 371

GAM 390

MULTIPLAYER GAME DEVELOPMENT

Multiplayer games were made possible by the advances in networking technology, increases in processor speed and data storage. Today, the majority of successful game titles are equipped with a multiplayer capability. This technical course discusses the fundamental aspects of multiplayer game development such as: design techniques, architectures, client and server side implementation, databases. PREREQUISITE(S): GAM 374

GAM 391

GAME PERFORMANCE OPTIMIZATION

This game programming class will focus on developing software to efficiently use the fixed CPU power and resources that are found in today's console and mobile devices. This course will use real-world game examples that demonstrate performance and optimization issues that software architects face in game development. These problems include: performance enhancements through extended matrix instruction set, dynamic memory usages, performance related to increasing run-time systems to very large scale, C++ language enhancements and extensions, algorithms, streaming and profiling. PREREQUISITE(S): (CSC 301 or CSC 383 or CSC 393) and CSC 374

GAM 394

GAME DEVELOPMENT PROJECT I

Students work in teams to design and develop a videogame that demonstrates their mastery of game design and development. Additionally, students will reflect on ethical decision making and professional ethics in the game industry. This course and its continuation, GAM 395, must be taken consecutively. PREREQUISITE(S): GAM 374 or GAM 392

GAM 395

GAME DEVELOPMENT PROJECT II

Continuation of GAM 394. PREREQUISITE(S): GAM 394

GPH 321

COMPUTER GRAPHICS DEVELOPMENT I

This course presents the fundamental mathematical foundations of graphics including an introduction to the basic geometric constructions of points, vectors, transformations, matrices and homogeneous coordinates. The course will explore applications of these mathematical techniques to rendering 3D scenes and lighting and shading surfaces in 3D. Advanced topics will include several key techniques from computational geometry such as the computation of object intersections and applications to rendering 3D scenes and object collisions. The focus of this course is on building the software from scratch rather than using a graphics application programming interface (API) so that students will gain a deeper understanding of the techniques they will be using in later courses through an API such as OpenGL or Direct3D. PREREQUISITE(S): CSC 300 or CSC 383 or CSC 393

GPH 325

SURVEY OF COMPUTER GRAPHICS

(Formerly GPH 371) A survey of basic 3D techniques, including interaction of light and color. The relationship between visual effect and geometry. Visual effects of rendering, texturing and lighting algorithms. Procedurally based modeling and an introduction to procedural animation techniques. PREREQUISITE(S): CSC 212 or CSC 262 or IM 330

GPH 329

COMPUTER GRAPHICS DEVELOPMENT II

(Formerly CSC 329) Basic graphics architecture. Coordinate systems. Three-dimensional representations and transformations. Simple visible-surface algorithms. Introduction to illumination. Gouraud and Phong shading. Antialiasing. Texture mapping and elements of animation. Students create a graphics package using a high-level graphics API such as OpenGL. PREREQUISITE(S): GPH 321 or(CSC 393 and either MAT 220 or MAT 262)

GPH 339

ADVANCED RENDERING TECHNIQUES

An introduction to shading techniques for highly realistic computer generated imagery. Texturing basics. Design, acquisition and application of layered textures to produce realistic dirt and aged surfaces. Turntables. Basic illumination and reflectance models. Elements of procedural texturing for organic surface materials such as wood and marble. The course includes an introduction to an industry standard shading language that is a powerful prototyping tool for both offline and real-time rendering environments. Students work in teams to produce convincingly organic environments. PREREQUISITE(S): GPH 325 or GPH 321 or (ANI 339 and GPH 355)

GPH 358

COMPUTER GRAPHICS AUTOMATION

Covers the use of scripting and other automation techniques to generate computer graphics and animation. Emphasis on the benefits and differences of scripting languages compared to conventional graphics programming. Using commercially available scripting environments, students will generate rich, interesting graphics and animations that would not be possible with the conventional user interface. PREREQUISITE(S): IM 330 or CSC 212 or CSC 262 or GPH 355 or CSC 242.

GPH 372

PRINCIPLES OF COMPUTER ANIMATION

(Formerly CSC 372) This course will cover a range of topics in introductory 3D Computer Animation. Topics covered will include key framing, interpolation, hierarchies, inverse kinematics, particle systems, and the basics of physically based simulation and modeling. PREREQUISITE(S): GPH329.

A&S 491

ADMINISTRATIVE THEORY AND BEHAVIOR

This course concerns theoretical concepts and empirical research relating to administrative behavior in organizations with special reference to educational organizations. Concepts are examined within the typical decisional framework of supervisors, chief school business officers, principles, and superintendents, and similar positions in the helping professions. Assignments are individualized.
Prerequisites:
Status as an Advanced Masters Education student is a prerequisite for this class.

GPH 389

REAL-TIME GRAPHICS TECHNIQUES

This course will cover the basic algorithms and techniques used in today's real-time graphics systems. Topics will include the following: an introduction to computational geometry including computation with polygonal meshes. Alternate scene representations for efficient geometry culling, including BSP trees and oct-trees. Bounding volume hierarchies, box-trees and R- trees, and application to geometry culling. Programmable graphics hardware and its applications to geometric deformations and surface rendering. PREREQUISITE(S): GPH 329

TDC 362

PRINCIPLES OF DATA COMMUNICATIONS

2Theory and components of data communication systems, modes, codes, and error detection techniques for data transmission, network protocols and line control procedures, communication carrier facilities and system planning. PREREQUISITE(S): (TDC 311 or CSC373) and (IT 263 or TDC261)

TDC 363

INTRODUCTION TO LOCAL AREA NETWORKS

Principles of computer networks using LANs as an example. Issues in communications protocols and compatibility. Client-server versus peer-peer software applications. Network operating system services and management of local networks. PREREQUISITE(S): IT 263 OR TDC 261.

TDC 365

NETWORK INTERCONNECTION TECHNOLOGIES

A comprehensive study of network interconnection technologies including layer 2 bridges and switches, layer 3 routers and higher-layer gateways. The TCP and IP protocols will be studied in detail, including IP address management and router operations and management along with associated Internet protocols. RIP and OSPF protocols will be considered. Course includes laboratory work with protocol analyzers and router administration. PREREQUISITE(S): IT 263 or TDC 261.

TDC 371

WIRELESS COMMUNICATIONS NETWORKS

An overview of wireless voice and data technologies. Analog and digital systems for cellular voice communications. Wireless network system operations, management and signaling. Satellite systems for voice, video, data and paging. Wireless local area network and wide area network transmission technologies. PREREQUISITE(S): IT263 OR TDC 261.

TDC 372

DIGITAL ACCESS SERVICES

A survey of access line technologies used to access Internet and other business network services. Topics will include traditional DS1, DS3 and SONET transport as well as Integrated Services Digital Network (ISDN), Digital Subscriber Line (DSL), Cable Modems, satellite services, Asynchronous Transfer Mode (ATM), and wireless data access methods. PREREQUISITE(S): IT263 or TDC261.

TDC 375

NETWORK PROTOCOLS

Advanced routing technologies, BGP protocols, multi-area routing protocols, network management protocols, Secure protocols, IP multicasting protocols. PREREQUISITE(S): TDC 365.

TDC 377

FUNDAMENTALS OF NETWORK SECURITY

Fundamentals of Network security design and implementation. Review of components used in an enterprise security infrastructure including routers, firewalls, security auditing and assessment tools, Virtual Private Networks (VPN) and Intrusion Detection Systems (IDS). The integration of the different components will be studied in detail, including IP addressing, Network Address Translation (NAT), design of firewall rule sets and performance considerations. Course includes laboratory work with routers, firewalls, Virtual Private Networks and security assessment tools.Pre-req: TDC 365.

TDC 379

TELECOMMUNICATION AND NETWORK SECURITY PRACTICUM

Design and implementation of telecommunication and network security infrastructure. This laboratory-based class includes the setup of realistic network infrastructure environment using bridges, routers, layer 2/3 switches and servers. Advanced routing infrastructure implementation using OSPF, RIPv2, EIGRP, BGP, multi-homed BGP setups and IGP/EGP redistribution. Network infrastructure hardening using routers and switches. PREREQUISITE(S): TDC 365 or Instructor consent. Good knowledge of TCP/IP is required.

CSC 343

INTRODUCTION TO OPERATING SYSTEMS

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(S): CSC373 and CSC374

CSC 347

CONCEPTS OF PROGRAMMING LANGUAGES

Syntax of programming languages: regular expressions, finite automata, context-free grammars, parsing. Scoping, binding, parameter passing, exception handling. Declarative programming languages. Typing, polymorphism. Runtime systems: dynamic loading, byte-code verification, security managers, garbage collection, versioning. PREREQUISITE(S): (CSC 301 or CSC 383 or CSC 393) and CSC 374.

CSC 371

MOBILE APPLICATION DEVELOPMENT

In this course we introduce the core issues associated with development for mobile devices. Students will learn a platform's IDE, frameworks, view, menus, controllers, graphics audio and more. Understanding the device's taps, touch, multi-touch, gestures, and accelerometers are just few of the interactions the class will cover. This course is design to be prerequisite for advanced mobile development classes. Every offering of the course will be explicitly targeting a specific device platform, (i.e. iPhone, Android, Windows Phone). PREREQUISITE(S): (CSC 301 or CSC 383 or CSC 393) and CSC 374

CSC 375

INTRODUCTION TO ROBOTICS

An introduction to the field of Robotics. Topics include history of robotics, kinematics, control theory, and sensor theory. A large portion of class time will be lab based, building and programming robots using the Lego Mindstorms NXT Robotics Kit. The programming will be using a C derivative and knowledge of C and general systems concepts is required. This course has an additional fee. PREREQUISITE(S): CSC 373 and CSC 374

TDC 368

NETWORK PROGRAMMING

Programming distributed client/server applications; the sockets interface and multitasking issues; client/server models; remote procedure call; examples of applications such as electronic mail and file transfer. PREREQUISITE(S): CSC261 or CSC309.

CSC 381

INTRODUCTION TO DIGITAL IMAGE PROCESSING

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. PREREQUISITE(S): Calculus or Linear Algebra

CSC 382

APPLIED IMAGE ANALYSIS

Fundamentals of computational image analysis will be explored in terms of its two most important components, image information extraction and modeling of image patterns. These components will be studied in the context of image representation, segmentation, classification, retrieval and recognition. The course will be useful for students interested in image analysis related to areas such as image databases, multimedia management, animation, GIS, computer graphics, medical imaging, remote sensing and robotics. Specific topics include, but are not limited to segmentation, multi-scale representation, shape analysis, texture analysis, Fourier analysis, wavelets, Gabor and fractal analysis, template matching, and object recognition. PREREQUISITE(S) CSC 381

CSC 324

DATA ANALYSIS & STATISTICAL SOFTWARE II

Continuation of IT223. Multiple regression and correlation, residual analysis, analysis of variance, and robustness. PREREQUISITE(S): IT 223 or MAT 351.

CSC 334

ADVANCED DATA ANALYSIS

The course will teach advanced statistical techniques to discover information from large sets of data. The course topics include visualization techniques to summarize and display high dimensional data, dimensional reduction techniques such as principal component analysis and factor analysis, clustering techniques for discovering patterns from large datasets, and classification techniques for decision making. The methods will be implemented using standard computer packages. PREREQUISITE(S): CSC 324 or consent of instructor.

CSC 367

INTRODUCTION TO DATA MINING

The course is an introduction to the Data Mining (DM) stages and its methodologies. The course provides students with an overview of the relationship between data warehousing and DM, and also covers the differences between database query tools and DM. Possible DM methodologies to be covered in the course include: multiple linear regression, clustering, k-nearest neighbor, decision trees, and multidimensional scaling. These methodologies will be augmented with real world examples from different domains such as marketing, e-commerce, and information systems. If time permits, additional topics may include privacy and security issues in data mining. The emphasis of this course is on methodologies and applications, not on their mathematical foundations. PREREQUISITE(S): IT 223

CSC 352

DATABASE PROGRAMMING

Programming in large-scale relational database environment using host languages. Design and implementation of on-line applications. Topics covered in this course include: database programming using open architectures, embedded query languages, dynamic query language, procedural extension of query languages, stored procedures, transaction management, and introduction to extensible markup data definition and retrieval languages. PREREQUISITE(S): IT240 and (CSC 212 or CSC 242 or CSC 243 or CSC 262 or CSC 224 or CSC 300 or CSC 309).

CSC 353

ADVANCED DATABASE CONCEPTS

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. PREREQUISITE(S): IT 240.

CSC 360

USER INTERFACE ARCHITECTURE AND DEVELOPMENT

Fundamentals of design and implementation for graphical user interfaces (GUIs). Students design a GUI-based application following the user-centered design process and implement it using the Moderl-View-Controller architecture. Topics include usability engineering, event dispatching, multi-threaded programming, GUI widget toolkits, frameworks and customization. PREREQUISITE(S): SE 350

ISM 360

USER-CENTERED EVALUATION

Overview of user research and usability evaluation methods. User research includes interviews, profiles and scenarios. Usability evaluation methods include expert inspections and usability testing. PREREQUISITE(S): ISM 210.

IT 330

USER INTERFACE DEVELOPMENT FOR INTERACTIVE SYSTEMS

Graphical user interface development for web and desktop applications. Event-driven user controls. Development involves use of a visual integrated development environment (IDE). Prerequisite: IT 232

CNS 320

COMPUTER FORENSIC AND INCIDENT RESPONSE

Introduction to the topics of computer forensic, computer crimes, response to security incidents, Cybercrime investigation and prosecution. Students will learn how an organization can setup a security response team, prepare for Security incidents and manage these incidents. PREREQUISITE(S): (CSC 301 or CSC 393) and CSC 373

CNS 340

FUNDAMENTALS OF INFORMATION ASSURANCE

This course is a survey of the fundamental elements of computer security and information assurance. Topics may include confidentiality, integrity, and availability; security policies; authentication; access control; risk management; threat and vulnerability assessment; common attack/defense methods; ethical issues. Formerly CSC 390.

CSC 333

CRYPTOLOGY

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. PREREQUISITE(S): (CSC 211 or CSC 241 or CSC 243) and MAT 140

SE 325

INTRODUCTION TO SOFTWARE ENGINEERING

This course introduces students to the activities performed at each stage of the development process so that they can understand the full lifecycle context of specific tasks such as coding and testing. Topics will include software development processes, domain modeling, requirements elicitation and specification, architectural design and analysis, product and process level metrics, configuration management, quality assurance activities including user acceptance testing and unit testing, project management skills such as risk analysis, effort estimation, project release planning, and software engineering ethics. PREREQUISITE(S): CSC 212 or CSC 224 or CSC 396 or CSC 242 or CSC 262 or IM 330 or CSC 243

SE 333

SOFTWARE TESTING

This course is designed for the software engineering professional to gain a greater understanding of the key ingredients in creating and/or managing a successful testing program to meet project needs. Topics covered include test lifecycle planning, test design & coverage analysis, complexity, levels of testing such as unit, integration, system, performance and stress testing. Best practice strategies in software testing such as verification & validation, early lifecycle testing, risk based testing and automation will also be examined including exposure to test automation methods and tools. PREREQUISITE(S): CSC 383 or SE 330 or CSC 301

SE 352

OBJECT-ORIENTED ENTERPRISE APPLICATION DEVELOPMENT

This course focuses on applying object-oriented techniques in the design and development of software systems for enterprise applications. Topics include component architecture, such as Java Beans and Enterprise Java Beans, GUI components, such as Swing, database connectivity and object repositories, server application integration using technologies such as servlets, Java Server Pages, JDBC and RMI, security and internationalization. PREREQUISITE(S): CSC 301 or CSC 383.

SE 368

SOFTWARE MEASUREMENT AND PROJECT ESTIMATION

This course will discuss various software metrics and defect models. Productivity and effort estimation models as well as software cost estimation will also be discussed. PREREQUISITE(S): IT 223 and SE 330.

CSC 327

PROBLEM SOLVING FOR CONTESTS

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. PREREQUISITE(S): CSC 301 or CSC 383

CSC 344

AUTOMATA THEORY AND FORMAL GRAMMARS

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. PREREQUISITE(S): (CSC 301 or CSC 383) and MAT 141

CSC 389

THEORY OF COMPUTATION

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. PREREQUISITE(S): CS321 or CS344.

CSC 308

FRAMEWORKS FOR WEB APPLICATION DEVELOPMENT

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(S): CSC 374

ECT 330

ADVANCED INTERNET APPLICATION DEVELOPMENT

This is a programming course focusing on advanced Internet technologies such as tiered design of Internet applications, transactions, creating components, and Web services. PREREQUISITE(S): CSC 212 or CSC 242 or CSC 243 or CSC 262.

ECT 360

INTRODUCTION TO XML

An introduction to Extensible Markup Language (XML) and XML transformations. XML syntax, processing and validation. Namespaces. Transformations using XSLT and XPath. XML applications such as XHTML, RDF, SVG, XSL. PREREQUISITE(S): CSC 211 or CSC 241 or CSC 261.

ECT 365

WEB SERVER OPERATIONS

This course will provide students with basic web server management and implementation skills, covering both the technologies fundamental to web servers operations and how these technologies impact the planning, installation, operations and management of web servers. Internet protocols, naming and routing. Site and service planning for different types of service offerings. Server configuration, maintenance and log analysis. Advanced management topics such as server farms, application servers, proxy and edge servers. PREREQUISITE(S): IT230

IT 320

CONTENT MANAGEMENT SYSTEMS

Design and use of Content Management Systems (CMSs) to manage unstructured digital media throughout the enterprise, simplify the publication of Web content, and locate and link content at any level of an organization. Discussion will focus on key users, their roles and responsibilities, collaborative workflow, and versioning. Students will become familiar with available CMSs, design a database-driven Website focusing on separation of the content's semantic layer from its layout, and implement a system using a variety of open-source software. Prerequisite(s): IT 130

IM 336

INTERACTIVE MEDIA SCRIPTING FOR PROGRAMMERS

Object-oriented programming in ActionScript for students who already know how to program. Students will design, code and test interactive media using standard and custom designed classes. PREREQUISITE(S): Experience in at least one high-level programming language.

GAM 371

OPTIMIZED C++

This game programming class will focus on developing software to efficiently use the fixed CPU power and resources that are round in today's console and mobile devices. This course will use real-world game examples that demonstrate performance and optimization issues that software architects face in game development. These problems include: performance enhancements through extended matrix instruction set, dynamic memory usages, performance related to increasing run-time systems to very large scale, C++ language enhancements and extensions, algorithms, streaming and profiling. PREREQUISITE(S): (CSC 301 or CSC 383 or CSC 393) and CSC 374