Course Requirements
Concentration Requirements
Students must also complete the requirements from one of the following concentrations:
standard or software engineering.
Degree Requirements
Students in this degree must meet the following requirements:
- Complete a minimum of 192 credit hours (generally 48 courses)
- Earn a grade of C- or higher in WRD 103, WRD 104, and all Major and Minor courses
- Earn a grade of D or higher in all other Liberal Studies and Open Elective courses
- Maintain a cumulative GPA of 2.0 or higher
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 or CSC 243
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, and data structures supporting disjoint-set operations. The implementation of the basic operations on each data structure are discussed and analyzed in terms of their efficiency. The applications covered highlight and exploit the unique characteristics of the data structures, and emphasize problem solving and recursive thinking. 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, 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
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, C programming, and debuggers, processor architecture. PREREQUISITE: (CSC 383 or CSC 393 or CSC 300) and Math 140
CSC 374
COMPUTER SYSTEMS II
A course on computer systems topics, focusing on operating systems components and their relevance for application programming. Caching, memory hierarchy, performance optimization, linking, processes, virtual memory, dynamic memory allocation, system level I/O. PREREQUISITE: CSC 373
CSC 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
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
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.
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
ISM 210
INTRODUCTION TO HUMAN-COMPUTER INTERACTION (FORMERLY IM 210)
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. PREREQUISITE(S): None
IT 130
THE INTERNET AND 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, exponential and logarithmic functions, related rates and other applications. PREREQUISITE(S): MAT 131 or placement by Mathematics Diagnostic Test.
Prerequisites:
MAT 131 or placement by test is a prerequisite for this class.
MAT 151
CALCULUS II
Applications of the derivative, extrema, curve sketching, definite and indefinite integrals, applications of the integral. PREREQUISITE(S): MAT 150 or 160.
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
Many computer games are based on physical interactions between game objects e.g. collisions, evasions, pursuit, etc. Design and implementation of these actions is not an easy problem. Concept and character development, storyboarding, prototyping, testing and implementation will be discussed. Students will gain hands on experience in game programming using a low level graphical library. PREREQUISITE(S): CSC 262 or CSC 309
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 DEVELOPMENT FOR MOBILE DEVICES
Mobile devices are becoming once of the most important hardware for game players. 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 301 or CSC 383 or CSC 393
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 (Senior standing)
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 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 212 or CSC 262 or IT 232 or CSC 224 or CSC 309 or CSC 300
CNS 340
FUNDAMENTALS OF INFORMATION ASSURANCE (FORMERLY CSC390)
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.
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) 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 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