Courses

Course offerings reflect the 2023-2024. One unit of credit equals four semester hours.

Computer Game and Entertainment Technology Courses | Computer Science Courses | Cybersecurity | Information Systems Courses

Computer Game and Entertainment Technology Courses

This course introduces students to the step-by-step process of making a short narrative film. Students will learn how to turn their ideas into a short screenplay. They will take that screen and make a practical production plan around it. They will learn shooting strategies and techniques. Finally, they will learn the basics of editing and assemble their rough elements into a final cut. The course will conclude with a screening of all the student’s short films.

This course will introduce students to the basic tools and techniques used in 3-D production, using an industry-standard software package, such as Maya. Students will be taken on an in-depth tour of the workspace, including navigation and customization. The course will lead students through all aspects of the production pipeline, including object creation and modeling basics, surface-mapping techniques, texturing and shading, character rigging, animation, and lastly lighting and rendering.

Prerequisite: ART 113.

This course will introduce students to design principles, as well as the skills and techniques required to create game mechanics, documentation, and functional prototypes for innovative video-game projects. Students will learn about industry-standard tools and resources including game engines, programming and scripting, and asset creation. It will emphasize design skills such as design documentation, systems design, level design, game balancing, play testing, interactive storytelling, and user experience design. Students will learn about the study of gameplay, player interaction, and community dynamics as well as the unique feature of various video game genres and platforms; such as PC, console, and mobile games.

Prerequisites: Sophomore or higher standing.

This course introduces the student to principles applied to animate computer-generated objects on a computer screen. Both 2-D and 3-D animation techniques are discussed, together with topics including the physics of animated systems, systems of particles, inverse kinematics, framing, interpolation, and hierarchies. Also considered is the application of animation to the simulation and modeling of physical systems.

Prerequisite: CS 255.

Central to this course is a team project that produces a threedimensional and interactive game using a game-development platform, such as Unity. This is a course that enrolls Computer Game and Entertainment Technology (CGE) and Digital Media (DM) students taking the game design track. CGE students apply programming and software development toward the main game project. DM students focus on the art, music, and/or sound assets. CGE students learn how to incorporate the artificial intelligence and physics into games using the gamedevelopment platform and DM students learn how to incorporate and integrate created assets into the game. Several small projects are used to learn how to use specific aspects of the development platform. Beyond the software-development side, project management and planning tools and techniques are introduced and are used to organize assets, workflows, tasks, versions, testing, and personnel. Both CGE and DM students study the project management aspects of game development.

Prerequisites: CGE 303 and CGE majors must also take CS 255.

Features of graphics programs are considered, including two-dimensional and three-dimensional coordinate systems, transformations, perspectives, hidden-line algorithms, and polygon filling (graphics), and boundary recognition, template matching, surface and edge enhancement (image processing).

Prerequisites: CS 220 and MTH 132.

This is the capstone course for the student majoring in Computer Game and Entertainment Technology. The student in this course applies all of the concepts and skills learned in previous CGE courses to produce a significant project. Students work in teams to produce a game in a genre of their choice. In the development of the team project, game development lifecycles, and relevant software engineering concepts are studied and are applied to game production. Several concepts and practices used in many game development processes are utilized in a widely-used gamedevelopment software platform and project management and project-planning software used to manage art assets, project management, project planning, design, validation, verification, testing, documentation, maintenance, and configuration management. Performance evaluation, software and asset reusability, cost models, and deployment are covered. The importance of security and testing are emphasized.

Prerequisite: CGE major with senior standing or consent of the instructor.

.50 credit

This course gives Honors Program students the opportunity to design and implement a significant research project in the field of Computer Game and Entertainment Technology, culminating in an appropriate public dissemination of research methods and findings. This research must build upon previous coursework taken within the major or minor, facilitating faculty supervision and guidance.

Repeatable for credit. Permission of the faculty supervisor and the director of the Honors Program required prior to registration.

Computer Science Courses

This course covers basic concepts in Computer Science and Digital Technology. These include, but are not limited to, computer systems, communication devices, digital media in audio and video, and various forms of handheld devices. The use of spreadsheets, databases, word processing, presentation software and electronic communication are also covered.

.50 credit

Core topics include Linux shell commands, shell scripts and related file systems. Several related topics such as file permission, process handling, system-administration tools, and the access of Linux resources via application programs.

Prerequisite: CS 220 or one course covering a high-level programming language.

This course introduces students to algorithms, object-oriented programming and related Computer Science topics. Primitive and user-defined data types, fundamental control structures, and the use of an integrated development environment of a programming language are studied through programming assignments. Debugging and testing techniques are introduced. An introduction to several computer science concepts, including an introduction to machine representations of data, computer system and processor architectures and related operation, file systems, and operating systems. This course is for CS, CGE and IS majors, but is recommended for students in any major who seek to enhance their skill set with knowledge of a programming language.

Prerequisite: No prerequisite.

Introduction to object-oriented programming language and design concepts are covered, including: classes, constructors, destructors, overloading, templates, generics, single inheritance, multiple inheritance, exception handling, streaming, and higher-order functions. The use of object-oriented programming is used to implement data structures, including arrays, vectors, stacks, queues, trees, sets, maps, hash-tables, and graphs. An introduction to algorithmic design and analysis using these data structures are given. Algorithms using the above-mentioned data structures are studied and analyzed as solutions to computational problems, such as sorting, searching, string-pattern, numerical, and optimization problems. Recursion is introduced and utilized in projects. Runtime systems and their memory layouts and how recursion and dynamic memory are implemented in these runtime systems is introduced.

Prerequisite: CS 220.

Mathematical properties and applications of tree structures and graph theory are studied along with related algorithms. Fundamental concepts of discrete probability, including the binomial, negative binomial, Poisson and normal distributions and Bayes’ theorem, are presented and used in the context of introductory analysis of algorithms. Computational linear algebra techniques and matrix operations are expressed algorithmically. Computations and algorithms for all topics in this course are implemented with an interpreted translator system, such as Python, Matlab, Octave, or ML.

Prerequisite: MTH 301 and familiarity with a programming language.

An in-depth study of computer hardware, from the logic gate level up through registers, and CPU devices. Students examine primary and secondary memory and input/output, interrupts and multiprocessor systems. The course also covers programming hardware using an assembler language and assembler features such as interrupts, internal and external subroutines, conditional assembly, and macros real-time programming.

Prerequisite: CS 220.

Students are introduced to the ethical and social issues directly or indirectly related to the use of digital technology and media. The impact and relationship of digital technology regarding the legislative, judicial, and executive of not only U.S. laws but international legal systems are also studied. Using ethical philosophies, students develop their critical thinking skills by providing clear arguments that support their opinion(s) or proposed solution(s) to problems related to conflicting interests listed in, but not limited to, the topics that include: intellectual property and distribution of information; privacy and security issues; free speech on the global internet versus local morality and political systems, and computer reliability and safety laws. Also covered are legal sanctions for computer crimes, workplace changes, automation and globalization. Ethical philosophies of Jean-Jacques Rouseau, John Locke, John Stuart Mill, Immanuel Kant, Jeremy Bentham, and John Rawls, are used as a structure for evaluating ethical and moral decisions surrounding problems associated with these topics. The primary ethical philosophies used to evaluate case studies include Act Utilitarianism, Rule Utilitarianism, Kantianism, and Social Contract.

Prerequisite: Sophomore or higher standing.

This course will introduce students to the concepts of designing and developing a website using the Web Content Management System (CMS) WordPress. Students will learn the structure of HTML5 documents, good markup techniques, and the concept of validation. It will identify issues specific to the Web-based presentation, page layout, effective navigation, and delve into the design process. Students will learn about using graphics, color, and fonts on web pages as well as working with tables and CSS. Site management techniques are covered including accessibility issues and working with domains and clients are also discussed.

Prerequisite: Sophomore standing or higher.

This course builds on concepts learned in CS 255 and involves programming projects that are larger than those in CS 255. C++ implementation techniques for implementing event-driven and graphical user interface (GUI) applications. Concepts of concurrency and parallelism is studied along with the implementation of these concept using multi-threading and parallel libraries and supporting frameworks. Libraries, such as STL or Boost, are studied and utilized within large projects. Runtime memory layouts are studied in more detail than in CS 255 (CS II). Integrated-development-environment tools for debugging, documenting, testing, versioning, and configuring software systems are introduced.

Prerequisite: CS 255.

Algorithm design and asymptotic analysis of algorithms using sequential and parallel computational models are central to this course. Mathematical models and techniques representing the best, worst, and average case analysis of covered algorithms are studied throughout the course. The Turing machine computational model and its variations and significance to the computation theory are introduced. Algorithm design techniques include: greedy, divide-and-conquer, backtracking, dynamic programming, branch-and-bound, Monte Carlo, genetic, and approximation. Algorithms are studied in the context of the general problem categories of sorting, searching, number-theoretic, computer vision, machine learning, twoplayer games, and language recognition and translation. Algorithms are implemented in an object-oriented programming language and related data structures are utilized; they include arrays, vectors, strings, stacks, queues, priority queues (heaps), lists, sets, multi-sets, maps, multi-maps, hash-tables, and graphs. Empirical timing and memory-usage analysis of the concrete program implementations of covered algorithms are included in projects. Computational complexity theory, intractability, and the P, NP, NP-Hard, and NP-complete complexity classes, and unsolvable problems are covered and the related concepts are integrated throughout the course.

Prerequisites: CS 318 and CS/MTH 302 or concurrent enrollment in either course.

This course introduces the theory of computer network and various types of networks, including local area, wide area and global networks. Theory topics include network architecture, data transmission techniques, network topologies, network media, and network security. Students do programming projects that utilize various widely used system platforms and communication protocol apply concepts.

Prerequisite: CS 220.

An introduction to fundamentals of artificial intelligence, including problem-solving techniques, search strategies and heuristics, planning, machine learning, and knowledge representation. Machine learning includes applying linear regression, logistic regression, and several variations of neural net models to computational problems utilized in intelligent systems. First order logic, normal forms, unification, and resolution principles are introduced with applications to problem solving, theorem proving, logic, and database theory.

Prerequisite: CS 320 or concurrent enrollment.

Java syntax and semantics and implementation pragmatics for expressing object-oriented design patterns. Java implementation strategies for web-based applications using event-driven programming, concurrent threads, file I/O, and database applications are studied. Documentation and debugging tools are introduced through various Integrated Development environments.

Prerequisite: CS 318 or CS 320 or consent of the instructor.

Process and thread, main and secondary memory, I/O and network device, file and information, and power resource management of operating systems are the main overarching topics of this course. Concepts of abstraction layers and operating system design principles are covered throughout the course. Low-abstraction level concepts such as instruction support and interrupt-processing support of an operating system is central to this course. Process and thread management includes the implementation and representation of processes and threads in an operation system. A substantial part of the study of process management focuses on interprocess communication, coordination, and synchronization. Processing models such as shared-memory and distributed systems are covered. Issues such as race conditions between processes (or threads) and hardware solutions and software solutions are covered and include solutions, at a low-abstraction level, such as semaphores, and at a high abstraction level, such as monitors, rendezvous, or the message passing interface model. Parallel computing is also discussed as a special case of concurrency and the support of the operating system for assigning threads to processors is studied. The issues are illustrated in classic concurrency and parallel-processing problems, such as producer-consumer and reader-writer; the relevance of these problems in the implementation of operating systems and some applications is shown. Process and job scheduling and performance-monitoring tools are also presented. Virtual and physical memory-management schemes are shown. Paged, segmented, and paged-segmented memory schemes along with their implementation are also studied. Representations of files and general implementation of file management and organization are studied. Device, network, communication, and power management are covered in the context of example operating systems, such the various Linux, Windows iOS, and Android versions, and releases. Examples of real-time and distributed operating systems are studied. Security is woven into every resource management area discussed above. Several programming projects involving Linux and Windows shell scripts and programming assignments (e.g. C/C++) are assigned to illustrate the above-mentioned concepts.

Prerequisites: CS 310 and CS 360. It is highly recommended, although not required, that a student also take CS 205 before taking CS 420.

A comparative study of programming languages from perspectives of the designer, implementer, and user is central to this course. Concepts covered through the three perspectives: include binding times, scoping rules, data type theory (e.g. strong/weak, inference), support for data abstraction, control structures, parameter passing, runtime-support systems, and support for concurrency. Several widely-used languages are used throughout to illustrate these concepts. To deepen the understanding of the concepts covered, projects involving recognition of a small language (or subset of a widely-used language), implementing an interpreter, and implementing a compiler that targets a virtual machine are assigned. Regular grammars, regular expressions, finite state automata, context free grammars, context-sensitive grammars, phrase structured grammars, push-down automata, linear-bounded Turing machines are studied in the context of building programming language translators. LL(k), SLR(k), LALR(k), and LR(k) parsing algorithms and related computational models are studied and utilized in translator projects. Software tools for building translators are also covered and utilized in the projects. Imperative, object-oriented, functional, scripting, and logiclanguage categories are studied. An introduction to the formal specification models of the semantics of programming languages is also covered.

Prerequisites: CS 310, CS 318, and MTH 302.

This course covers ways to create dynamic web applications using both server side and client-side programming. In this course students will learn web application basics, ASP.NET application fundamentals, validation, basic forms authentication for web-based security, databinding from a data source, creating and consuming web services, sessionstate configuration, and application data caching.

Prerequisite: CS 255 or IS 224.

A presentation of formal models of computation via Turing machines, random access machines and partial recursive functions. Other topics are Godel’s numbering, Church’s thesis, unsolvable problems, Chomsky hierarchy and computational complexity.

Prerequisite: MTH 302.

.50 or 1.00 credit

Students earn credit for computer-related activities performed at participating company or corporation sites. Normally, only full-time day students are eligible for this course.

Prerequisite: consent of the department chair.

An introduction to professional development, testing and maintenance of large-scale software systems where several stakeholders, software modules, versions, configurations, and/ or years are involved. This course satisfies the capstone requirement and requires working on a team project. Several concepts and practices used in many software processes are introduced: feasibility, requirements, project management, project planning, analysis, design, validation, verification, testing, documentation, maintenance, configuration management, performance evaluation, software tool usage, software reusability, cost models, and deployment. The importance of security and testing are emphasized in all aspects of software development. Project processes and operational practices, such as waterfall, agile, and DevOps, are introduced, compared and then followed as appropriate, in capstone projects. Examples of projects include, but are not limited to the following: general software applications or systems: an e-commerce site, information-system mobile app, embedded system, and/or real time application.

Prerequisite: CS major with senior standing or consent of the instructor.

.50 or 1.00 credit

Prerequisite: No prerequisite.

.50 credit

This course gives Honors Program students the opportunity to design and implement a significant research project in the field of computer science, culminating in an appropriate public dissemination of research methods and findings. This research must build upon previous coursework taken within the major or minor, facilitating-faculty supervision and guidance.

Repeatable for credit. Permission of the faculty supervisor and the director of the Honors Program required prior to registration.

Cybersecurity Courses

Examines the technology and methodology for protecting information to ensure its integrity, confidentiality, and authenticity. It covers the foundation of cryptography, moderncryptographic protocols, algorithms, and implementation issues. Also included are topics in private and public key cryptography, block ciphers, pseudorandom functions, encryption standards, message authentication, digital signatures, and key management.

Prerequisite: CS/MTH 302.

Explores the threats and risks prevalent in today’s organizations as a result of the pervasive use of technology. Students learn risk evaluation techniques and identify security and control techniques to minimize the potential of a security breach.

Prerequisite: Junior or higher standing.

Explores the use of intrusion-detection methodologies, CSI hardware and software tools, and approaches to computer crime incident response. Computer forensic principles, including operating system concepts, registry structures, file system concepts, boot processes and file operations are examined. This course also includes an overview of the theory and techniques utilized for tracking attackers across the Internet. Practical exercises are drawn from case studies of Internet-based crimes.

Prerequisite: CS 205 and CS 420.

The ongoing need for fast, versatile and more powerful communication systems has accelerated the growth of wireless, mobile and cloud computing. In many cases, securing these emerging platforms is an afterthought, thus leaving critical systems to prey on to invidious cyber-attack. This course examines a broad range of contemporary techniques to support and maintain operational integrity and data protection within each modality.

Prerequisite: CS 360.

Cybersecurity professionals have a unique responsibility to find and understand an organization’s vulnerabilities, and to work to mitigate their threat. This course will teach students how to perform reconnaissance by studying a target’s infrastructure through data-mining blogs and social-networking sites. Students will be immersed in an interactive-lab environment where they will be shown how to scan, test, hack, and secure systems from an ethical perspective using various tools, techniques, and methodologies for network-penetration testing.

Prerequisite: CYS 409 and either CYS 410 or CYS 412.

Information Systems Courses

.50 credit

An introduction to the use of computer-based productivity tools. Emphasis on the use of Microsoft Office and data/ statistical analysis tools used in business, e.g. “R” and Tableau.

Prerequisites: None.

This course introduces Visual C# programming language. The student will write programs in Visual C# that demonstrate the features of the C# language including control structures, input/ output operations, and use of library functions such as those that are used to implement graphical user interfaces and to access databases. This course is recommended not only for IS and CS majors, but also for students majoring in business, the natural sciences, mathematics, and other disciplines in which programming a personal computer is required.

Prerequisite: CS 220.

.50 credit

This online course is designed to provide students with an in-depth understanding of one programming language that is in demand in the marketplace. Languages chosen vary by semester and include both legacy programming languages that are still in high demand and evolving programming languages that are beginning to see industry demand. This course may be repeated for credit with instructor or academic advisor approval.

Prerequisites: Two programming language courses, which may or may not cover different languages. (Any two equivalent courses from the following set: CS 220, CS 255, IS 224, CS 440, IT 232 or IT 482.)

Decision making and problem solving utilizing the various quantitative models commonly used to improve and enhance business intelligence within an organization. Such models to include inventory theory, exponential smoothing, artificialneural networks, waiting-line models, and stochastic processes. Practical applications of artificial intelligence and a discussion of data mining techniques are included.

Prerequisites: MTH 151 or MTH 126, and MTH 345.

Topics include: defining data requirements and modeling those requirements using Entity Relationship Diagrams, creating physical databases using Microsoft SQL Server, and SQL coding for simple queries, complex queries, stored procedures and triggers. Additional topics include data quality, data warehouses, data security, and distributed databases.

Prerequisite: CS 220.

A study of the phases of analysis, design and implementation of information systems. Topics include: fact-gathering techniques, design of output, input, files, presentation techniques, system processing, project management, system testing and documentation. A structured approach to system design and development is emphasized.

Prerequisite: A course covering a high-level programming language.

Fundamentals of information systems in organizations, with a focus on the impact of information systems on organizational behavior, communications, and managerial style. The use, misuse, and management of computer-based systems and their integration with organizational goals are emphasized. Information systems in the functional areas of marketing, production, and finance are studied. The case study method is used.

Prerequisite: CS 220 or IT 228.

.50 credit

This course gives Honors Program students the opportunity to design and implement a significant research project in the field of information systems, culminating in an appropriate public dissemination of research methods and findings. This research must build upon previous coursework taken within the major or minor, facilitating-faculty supervision and guidance.

Repeatable for credit. Permission of the faculty supervisor and the director of the Honors Program required prior to registration.

Connect with #elmhurstu