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
Computer Game Development
Data Analysis and Data Mining
Theory of Computation
Open elective credit also is required to meet the minimum graduation requirement of 192 hours.
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.
MAT 130 or above or equivalents or placement by test is a prerequisite for this class.
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.
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
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
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
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
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.
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
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
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.)
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
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.
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
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)
(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
DISCRETE MATHEMATICS II
Methods of direct and indirect proof, set theoretic proofs, sequences, mathematical induction, recursion, multiply-quantified statements, relations and functions, complexity.
MAT 140 is a prerequisite for this class.
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
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.
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.
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.
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.
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.
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
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
INTRODUCTORY COMPUTING FOR THE WEB
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
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
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
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.
MAT 131 or placement by test is a prerequisite for this class.
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.
MAT 150 or MAT 160 or MAT 170 is a prerequisite for this class.
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.
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.
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.
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.
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
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
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
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
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.
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
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
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
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
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
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
GAME DEVELOPMENT PROJECT II
Continuation of GAM 394. PREREQUISITE(S): GAM 394
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
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
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)
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)
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.
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.
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.
Status as an Advanced Masters Education student is a prerequisite for this class.
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
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)
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.
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.
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.
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.
Advanced routing technologies, BGP protocols, multi-area routing protocols, network management protocols, Secure protocols, IP multicasting protocols. PREREQUISITE(S): TDC 365.
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.
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.
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
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.
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
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
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.
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
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
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.
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.
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
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).
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.
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
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.
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
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
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.
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
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
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
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.
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.
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
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
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.
FRAMEWORKS FOR WEB APPLICATION DEVELOPMENT
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.
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.
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
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
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.
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