CS 258: Introduction to Object Oriented Programming
Introduces the fundamental concepts of programming from an object-oriented perspective. Through the study of object design, this course introduces data abstraction, inheritance, overriding, programming flow of control, operator precedence, and simple data structures such as lists and arrays. This course also introduces the basics of human-computer interfaces, graphics, and the social implications of computing, along with significant coverage of software engineering. 3 Hours Credit.
CS 311: Algorithm Design
Introduces formal techniques to support the design and analysis of algorithms, focusing on both the underlying mathematical theory and practical considerations of efficiency. 3 Hours Credit.
CS 365: Operating Systems
This course examines the important problems in operating system design and implementation. The operating system provides an established, convenient, and efficient interface between user programs and the bare hardware of the computer on which they run. The operating system is responsible for sharing resources (e.g., disks, networks, and processors), providing common services needed by many different programs (e.g., file service, the ability to start or stop processes, and access to the printer), and protecting individual programs from interfering with one another. The course will start with a brief historical perspective of the evolution of operating systems and then cover the major components of most operating systems. This discussion will cover the tradeoffs that can be made between performance and functionality during the design and implementation of an operating system. Particular emphasis will be given to three major OS subsystems: process management (processes, threads, CPU scheduling, synchronization, and deadlock), memory management (segmentation, paging, swapping), and file systems; and on operating system support for distributed systems. Both Microsoft and Unix systems will be covered. 3 Hours Credit.
CS 379: Programming Languages
Introduces the theory and practice of programming language translation. Topics include compiler design, lexical analysis, parsing, symbol tables, declaration and storage management, code genera'on, and optimization techniques. Examines the features of prominent languages. 3 Hours Credit.
CS 461: Artificial Intelligence
Introduces students to the fundamental concepts and techniques of artificial intelligence (AI), including algorithmic strategies, discrete probability, intelligent systems fundamental issues and basic search strategies and knowledge representation and knowledge reasoning and basic machine learning and advanced search techniques and reasoning under uncertainty and agents. 3 Hours Credit.
CS 483: Senior Project
This course applies computer programming and software engineering concepts, principles, and practices to a comprehensive system development project. A team approach is used to analyze the problem, and then specify, design, implement, test, validate, and deliver a software package that solves the problem. Teams will use software engineering techniques and project management techniques, including milestones and formal presentations, to create and test the package solution to the system problem. 3 Hours Credit.
CS 499: Introduction to Parallel Computing
Introduces shared memory parallel architectures and programming, distributed memory, message-passing data-parallel architectures, and related parallel programming using map-reduce technology. 3 Hours Credit.