Computer Systems Engineering (CSYE)

CSYE 6200. Concepts of Object-Oriented Design. 4 Hours.

Introduces object-oriented design and programming via the Java programming language; the use of inheritance, composition, and interface classes in software design; development of Java applets and applications; study of the Java class libraries, including the swing tool kit for building human computer interfaces, the network package for development of client-server systems, and the collections’ package for data structures and sorting algorithms. Requires a course project. Requires knowledge of C programming.

CSYE 6202. Concepts of Object-Oriented Design with C#. 4 Hours.

Introduces object-oriented design and programming via the C# (C-sharp) programming language and its underlying .NET platform. Covers the use of inheritance and composition in software design and development of complex C# .NET applications. Topics include classes, overloading, data abstraction, information hiding, encapsulation, inheritance, polymorphism, file processing, templates, exceptions, container classes, and low-level language features.

CSYE 6205. Concepts of Object-Oriented Design with C++. 4 Hours.

Introduces object-oriented design and programming via the C++ programming language. Covers the use of inheritance and composition in software design and development of complex C++ applications. Topics include classes, overloading, data abstraction, information hiding, encapsulation, inheritance, polymorphism, file processing, templates, exceptions, container classes, and low-level language features. Requires a course project.

CSYE 6220. Enterprise Software Design. 4 Hours.

Designed to build on previous experience in concepts of object-oriented design courses with equal focus in the three areas of architecture, design, and implementation. Instruction and hands-on exercises cover both server-side and client-side web programming. Offers students an opportunity to build a conceptual understanding and to gain practical experience with popular frameworks (Spring MVC, Hibernate, and Dojo or jQuery) that increase productivity, empower developers, and greatly simplify web development. The goal is to be able to build the server side and client side of substantial web-based, client-server, database-intensive, multitier applications.

CSYE 6225. Network Structures and Cloud Computing. 4 Hours.

Offers a practical foundation in cloud computing and hands-on experience with the tools used in cloud computing. Designed as a foundation course for cloud-aware, adept professionals. Focuses on the fundamentals of cloud computing, the principal areas of cloud architectures, cloud security, cloud governance, cloud storage, cloud virtualization, and cloud capacity. Discusses the Internet evolution that led to cloud and how cloud applications revolutionized Web applications.

CSYE 6230. Operating Systems. 4 Hours.

Covers basic concepts of operating systems and system programming, such as utility programs, subsystems, and multiple-program systems. Main topics include processes, interprocess communication, and synchronization; memory allocation, segmentation, and paging; loading, linking, and libraries; resource allocation, scheduling, and performance evaluation; file systems, storage devices, and I/O systems; and protection, security, and privacy. Emphasizes key concepts through code design and development.

CSYE 6305. Introduction to Quantum Computing with Applications. 4 Hours.

Addresses how scientists and engineers can use quantum computers to simulate large quantum mechanical systems easily, which is crucial in discovery of new lifesaving drugs and new efficient materials. Quantum computers maintain an abstract state where both 0 and 1 states exist simultaneously with some probability. The course delves deeper into how such an abstract state can be realized physically and used as a computing tool to simplify algorithm implementation and execution. Offers students an opportunity to learn about the latest breakthroughs in cryptography systems (RSA), as well as fast database search; accurate weather forecasting; ultrasecure communication; and fast image recognition.

CSYE 6510. Fundamentals of the Internet of Things. 4 Hours.

Explores the foundations of and technologies involved in the Internet of Things (IoT). Topics include machine-to-machine (M2M) communications and its relationship with IoT. Examines fundamental components of the IoT architecture reviewing industry standards. Presents a large array of case studies. Discusses the fundamentals of data networks with a focus on different wireless technologies relevant to IoT, including the latest developments in IEEE 802.11, IEEE 802.15.4, and BLE, as well as network layer protocols such as 6LoWPAN that are critical to the deployment of wireless IoT networks. Discusses a range of IoT application protocols, especially MQTT, CoAP, and AMQP. Also explores IoT security and privacy considerations and identification mechanisms for IoT devices. Introduces wireless sensor networks and routing protocols for wireless networks.

CSYE 6530. Connected Devices. 4 Hours.

Offers an in-depth, software-intensive exploration of the Internet of Things (IoT)—from device to cloud—culminating in a semester-long project where each student designs, builds, and presents an end-to-end, integrated IoT solution. Covers IoT concepts and architectures, and incorporates significant software development activities through weekly modules. Includes testing, DevOps, and messaging protocols specific to the IoT; device integration; and cloud services designed for IoT ecosystems.

CSYE 6700. Technical Writing and Professional Development. 0 Hours.

Emphasizes professional communication skills through intensive verbal practice and technical writing application. Students work together in groups and individually to practice verbal and written communication to increase their English competency and comfort level for work in the United States. Offers students an opportunity to develop their ability to communicate technical skills sets in a professional setting. This course does not count toward graduation requirements.

CSYE 6962. Elective. 1-4 Hours.

Offers elective credit for courses taken at other academic institutions. May be repeated without limit.

CSYE 7105. High-Performance Parallel Machine Learning and AI. 4 Hours.

Explores the parallelization of machine learning and deep learning code that leads to high performance on heterogeneous cluster architectures. Includes the applications to a variety of domains, including image classification, speech recognition, and natural language processing, etc. Covers a brief overview of the emerging parallel computing applications. Analyzes system architectures for different kinds of parallel computing systems (shared-memory system, distributed-memory system, accelerator system, and hybrid). Offers students an opportunity to practice the principles and the practice of the emerging parallelism-based machine-learning paradigm.

CSYE 7125. Advanced Cloud Computing. 4 Hours.

Examines a collection of repeatable, generic software design patterns such as sidecar pattern, ambassador pattern, adapter pattern, event driven, stream and batch processing, containers and container orchestration with Kubernetes, replication, partitioning, transactions, consistency, and consensus to help make the development of reliable distributed systems more approachable and efficient. Microservices, containers, and container orchestration have fundamentally changed how distributed systems are developed. Offers students an opportunity to determine which kind of technology is appropriate for which purpose and to understand how these patterns can be combined to form the foundation of a good application architecture.

CSYE 7200. Big-Data System Engineering Using Scala. 4 Hours.

Covers the fundamentals of functional programming with Scala and seeks to provide a basic, practical foundation for students who want to use it as a language for working with big-data platforms. Scala is one of a new breed of general-purpose functional programming languages that is strongly typed and is object oriented. It runs on the Java virtual machine and is able to share libraries from the vast collection of open-source projects written in Java. For these reasons it is readily accessible by programmers of Java, C++, and similar languages.

CSYE 7215. Foundations of Parallel, Concurrent, and Multithreaded Programming. 4 Hours.

Covers all aspects of concurrent program design, development, and implementation utilizing the Java multithreading API/facilities. Topics covered include thread safety and lifetime issues, block structured versus explicit synchronization, intrinsic versus explicit locking, thread pools, liveness issues, deadlock, livelock, race conditions, atomicity, performance and scalability, execution policies, test strategies. Major Java multithreading API/facilities covered include synchronized blocks, wait sets, intrinsic locks and condition variables, synchronized and concurrent collections, executor framework. Comparisons between the Java multithreading API and the Posix Pthreads multithreading standard are provided.

CSYE 7220. Deployment and Operation of Software Applications. 4 Hours.

Introduces the four most popular infrastructure languages—Chef, Puppet, Ansible, and Salt— and codes with them in the same way that we code with Java, Python, C#, and Javascript. IT infrastructure languages and their underlying methods and tools, referred to as DevOps, bridge the gap between software development and software administration. Instead of recruiting CPU cycles on our laptops, we create and manage virtual IT infrastructures on a public cloud. Offers students an opportunity to learn how to manipulate virtual machines, containers, and lambdas and set up assembly lines on public clouds in the fashion of a Model T assembly line.

CSYE 7224. Engineering Reliable, Scalable, and Maintainable Distributed Systems. 4 Hours.

Covers repeatable, generic software design patterns such as sidecar, ambassador, adapter, event driven, stream and batch processing, containers and container orchestration, replication, partitioning, transactions, consistency, and consensus to help make the development of reliable distributed systems more approachable and efficient. Studies the common language and framework these patterns provide. Microservices, containers, and container orchestration have fundamentally changed how distributed systems are developed. Designed to find ways of thinking about distributed systems—not just how they work, but also why they work, and what questions we need to ask. Offers students an opportunity to decide which kind of technology is appropriate for which purpose and to understand how these patterns can be combined to form the foundation of a sound application architecture.

CSYE 7230. Software Engineering. 4 Hours.

Looks at the software life cycle (requirements analysis and specification, software design, coding, testing, and maintenance). Offers verification, validation, and documentation at various stages of the life cycle. Covers the Unified Modeling Language as applied to the software life cycle. Covers applications of design patterns. Overviews user interface design, software metrics, and software development environments. Emphasis is on modular software construction and development of modular libraries. Requires a small software development project.

CSYE 7245. Big-Data Systems and Intelligence Analytics. 4 Hours.

Offers students an opportunity to learn a hands-on approach to understanding how large-scale data sets are processed and how data science algorithms are adopted in the industry through case studies and labs. This project-based course builds on INFO 7390 and focuses on enabling students with tools and frameworks primarily to build end-to-end applications. The course is divided into three parts: building the data pipeline for data science, implementing data science algorithms, and scaling and deploying data science algorithms.

CSYE 7250. Big Data Architecture and Governance. 4 Hours.

Focuses on creating and managing a data-driven enterprise. Geared to current IT technical professionals, data scientists, technical project managers, aspiring IT professionals, and managers who want to understand the complex nature of creating and managing data-driven projects to support the new and legacy data environments. Covers the analysis that is required to design data-driven projects and make appropriate recommendations for the target state of an organization. This analysis is used as input to create a comprehensive road map to achieve the target state and includes current and future uses of data, consumption methods, data sources and categories, and aggregation and quality requirements.

CSYE 7270. Building Virtual Environments. 4 Hours.

Covers the basics of three-dimensional graphics programming using the Unity game engine. Includes a built-in terrain editor; a shader development facility; built-in physics; and advanced lighting, shadows, and audio to build 3D virtual environments and serious games. Javascript and C# can be used for scripting. Assets from various 3D modeling programs can be imported. Facilities to publish to the PC, Mac, iPhone and Wii and support for real-time multiplayer games are available. Requires a final project.

CSYE 7280. User Experience Design and Testing. 4 Hours.

Introduces user experience concepts while working on Web design projects. Offers students an opportunity to build the necessary skill sets to make better decisions when designing contemporary websites that cater to customer needs. Students practice interview techniques to understand user requirements while keeping user experience central to the effort. Uses wireframes and user scenarios to drive the creative design process. Various case studies are introduced and discussed in team settings to emphasize user perspectives. Uses quality assurance and usability testing to drive validation and user-acceptance testing and approvals.

CSYE 7370. Deep Learning and Reinforcement Learning in Game Engineering. 4 Hours.

Introduces a deep learning and reinforcement learning framework for games called ML-Agents, which enable games and simulations to serve as environments for training intelligent agents. Studies and reviews classical game artificial intelligence (game AI), primarily search and decision trees. Uses game AI to generate responsive, adaptive, or intelligent behaviors primarily in nonplayer characters (NPCs) similar to human-like intelligence. Game AI includes everything from simple chasing and evading to pattern movement, to create opponents with complex tactical and strategic decisions.

CSYE 7374. Special Topics in Computer Systems Engineering. 4 Hours.

Offers topics of current interest in computer systems engineering. May be repeated without limit.

CSYE 7945. Software Engineering Project. 4 Hours.

Supports teamwork on a large software project under faculty supervision. The projects are drawn from an engineering field, and involve design, systems engineering, manufacturing, planning maintenance, reliability, quality control, risk assessment, project control, evaluation of alternatives, and so on. The project may cover either the whole software development life cycle or a significant part of it.

CSYE 7962. Elective. 1-4 Hours.

Offers elective credit for courses taken at other academic institutions. May be repeated without limit.

CSYE 7978. Independent Study. 1-4 Hours.

Offers theoretical or experimental work under individual faculty supervision. May be repeated without limit.

CSYE 7990. Thesis. 1-8 Hours.

Offers analytical and/or experimental work conducted under the direction of the faculty in fulfillment of the requirements for the degree. Requires first-year students to attend a graduate seminar program that introduces students to the methods of choosing a research topic, conducting research, and preparing a thesis. Requires successful completion of the seminar program. May be repeated without limit.