Courses
Please be sure to check that you have completed all pre-requisites before attempting to enroll in a course.
Course ID | Name | Description |
---|---|---|
CS 1308 | Computer Literacy and the Internet | A study of the uses of computers and their effects on society. Text processing, spreadsheets, databases, and Web programming. Does not count for computer science credits toward a minor, or a BS or a BA in computer science. |
CS 1319 | Fundamentals of Computer Science | Provides fundamental knowledge of the six layers of computer science as per the ACM CS0 curriculum. The information, hardware, programming, operating system, applications, and communications layers are presented plus appropriate open computer laboratory exercises. Does not count for computer science credit towards a minor, BS, or BA in computer science. |
CS 1342 | Programming for Scientists and Engineers | This course is an introduction to computer science and problem solving techniques with applications in engineering and the physical sciences. Topics include an introduction to computer organization, data representation, algorithm development, and computer programming in a high-level language. |
CS 1428 | Foundations of Computer Science I | Introductory course for computer science majors, minors and others desiring technical introduction to computer science. Contains overview of history and structure of the digital computer, including binary data representation. Problem solving, algorithm development, structured programming, good coding style, and control structures of C++ are emphasized. |
CS 2308 | Foundations of Computer Science II | The course is an introduction to Abstract Data Types (ADTs) including lists, stacks, and queues. Searching and sorting, pointers and dynamic memory allocation, and simple classes and objects also will be covered. The course is a continuation of CS 1428. |
CS 2315 | Computer Ethics | This course is primarily for computer science majors, focusing on the ethical codes of the professional societies, the philosophical bases of ethical decision-making, and the examination of several contemporary case studies. |
CS 2318 | Assembly Language | A course covering assembly language programming, including instruction sets, addressing modes, instruction formats, looping, logic, data representation, subroutines and recursion; and the interface between hardware and software. |
CS 3190 | COOPERATIVE EDUCATION | |
CS 3290 | ADVANCED COOPERATIVE EDUCATION | |
CS 3320 | Internet Software Development | A course providing foundations for the construction and design of static and dynamic Web pages with database applications. This will include server-side and client-side software development. |
CS 3339 | Computer Architecture | Use of fundamental hardware components. Topics include ALUs, single and multiple cycle datapath and control, RISC vs. CISC, pipelining, caches, I/O, virtual memory, and related performance issues. |
CS 3354 | Object-Oriented Design and Programming | The course covers object-oriented design principles and programming for students with prior programming experience. The topics include inheritance and polymorphism, object-oriented design process, UML diagrams, design patterns, exception handling and multithreading. Students will design and implement programs in Java. |
CS 3358 | Data Structures and Algorithms | This is a course covering classic data structures and the analysis of algorithms. |
CS 3360 | Computing Systems Fundamentals | This course covers fundamental concepts underlying the design and implementation of computing systems. It introduces students to problems that reoccur in computing systems and the tools and algorithms used to solve them. Topics include performance evaluation, resource management and scheduling, concurrency and synchronization, and communication and networks. |
CS 3369 | Embedded Computer Systems | This course studies the architecture of embedded systems, micro-controllers, their peripherals, languages, and operating systems and the special techniques required to use them. |
CS 3378 | Theory of Automata | An introduction to automata theory, computability, and formal languages. |
CS 3393 | Software Testing | This course introduces basic concepts and techniques for testing software and finding bugs. Topics include test design, test process, unit, integration and system testing, manual and automatic techniques for generation of test inputs and validation of test outputs, and coverage criteria |
CS 3398 | Software Engineering | The study of software design, implementation, and validation techniques through team projects. Structured analysis, programming style, and project documentation are emphasized in large software projects. |
CS 4100 | Computer Science Internship | Provides on-the-job training supervised by computer scientists in industry internship programs approved by the department. May be repeated once but not for credit and requires approval of the department chair. |
CS 4298 | Undergraduate Research I | Supervised individual research project in a mentor-student relationship with a computer science faculty member. Cannot be given degree credit until the satisfactory completion of CS 4299. |
CS 4299 | Undergraduate Research II | Supervised individual research projects in a mentor-student relationship with a computer science faculty member. |
CS 4310 | Computer Networks | This course covers the fundamental concepts in the design of computer networks and networking protocols with emphasis on the Internet (TCP/IP) architecture. The covered topics include: protocol layering, media access, internet routing, transport protocols and applications. |
CS 4315 | Introduction to Data Mining and Information Retrieval | This course covers fundamental concepts and techniques in data mining and information retrieval. Data mining topics include classification, cluster analysis and pattern mining. Information retrieval topics include Boolean retrieval, vector space model, and Web search. |
CS 4318 | Compiler Construction | This course investigates theoretical and practical issues in the design and construction of modern compilers. Topics covered include lexical and syntactic analysis, syntax-directed translation, type checking, intermediate representation, code generation, and runtime systems. A major portion of the course involves implementing a compiler from scratch for a C-like programming language. |
CS 4326 | Human Factors of Computer Systems | Principles and methods in human factors and ergonomics applied to the design and use of computer systems. |
CS 4328 | Operating Systems | This course covers the principles of operating systems, algorithms for CPU scheduling, memory management, cooperating sequential processes and device management. |
CS 4332 | Introduction to Database Systems | Introduction to database concepts, data models, file structures, query languages, database management systems. |
CS 4337 | INTRO TO COMPUTER VISION | |
CS 4346 | Introduction to Artificial Intelligence | An introduction to the basic concepts of artificial intelligence; search techniques, knowledge representation, problem solving. |
CS 4347 | Introduction to Machine Learning | Provides systematic introduction to machine learning, covering basic theoretical as well as practical aspects of the use of machine learning methods. Topics include learning theory, learning methods, recent learning models, etc. Application examples include multimedia information retrieval, text recognition, computer vision, etc. |
CS 4350 | Unix Systems Programming | Fundamentals of Unix operating systems, Unix file system and environment, C memory allocation, development tools, processes and signals, threads, device drivers, and programming for security. |
CS 4353 | INTRO GRAPHICAL USER INTRFCS | |
CS 4368 | Survey of Computer Languages | A survey of computer languages. Criteria for choosing languages to be covered include history, important development paradigms and environments, and language implementations. |
CS 4371 | Computer System Security | Course covers practical aspects of computer system security including managing and producing code for secure systems. Theory, such as cryptography, is introduced as needed. |
CS 4372 | Introduction to Digital Multimedia | The course covers concepts, problems and techniques in digital multimedia. Topics include digital representation and data compression of text, speech, audio, natural and synthetic images, and video, as well as multimedia applications, transmission, and standards. In addition, the course introduces perceptual aspects of multimedia signals and sources. |
CS 4378W | Introduction to Human Computer Interaction (HCI) | Introduces HCI topics specifically highlighted by new input modalities such as eye-tracking. Considers new input modalities as new channels for data gathering including multimedia compression, interface design, usability evaluation, biometrics. Application of HCI as interdisciplinary research tool also will be discussed. |
CS 4378Z | Practical Game Development | Course teaches practical aspects of computer game design and implementation. Topics include graphics game engines, game physics, AI methods applied to games, and software architectures for computer games. Students will gain knowledge and skills needed for game development via team projects. |
CS 4379A | Software Testing | The concepts used in a formal testing of safety critical and high-quality software applications are investigated. Topics include, but are not limited to, test design, static and dynamic testing tools, and formal testing documentation. |
CS 4379B | Introduction to Graphical User Interfaces | This course covers abstract and practical foundations of graphical user interface design, evaluation, and implementation. It discusses the fundamentals of computer graphics and interactive computer/human interfaces. The course includes a survey of usability measures, the major GUI standards, and GUI tools. |
CS 4379D | DISTRIB LEDGER SYS & BLOCKCHNS | |
CS 4379Q | Introduction to Recommender Systems | This course covers the basic concepts of recommender systems, including personalization algorithms, evaluation tools, and user experiences. We will discuss how recommender systems are deployed in e-commerce sites, social networks, and many other online systems. Additionally, we will review current research in the field. |
CS 4379V | Fundamentals of Algorithm Design and Analysis | This course covers classic algorithms in computer science and their applications, with emphasis on algorithm design, algorithm analysis, and problem formulation. Topics include disjoint sets and union-find algorithms, tree and graph algorithms, sorting algorithms, greedy algorithms, dynamic programming, and string processing algorithms. |
CS 4379Y | Introduction to Green Computing | Reducing energy consumption of mobile devices, cloud computing platforms, and supercomputers is a paramount but daunting problem. This course covers fundamental concepts and techniques in green computing, including a hardware energy efficiency roadmap; energy efficient software design, resource management, and storage solutions; and green data centers and mobile computing. |
CS 4380 | Parallel Programming | This course teaches practical aspects of parallel programming. The covered topics include multi-core processors and shared-memory programming, hardware accelerator programming, and distributed-memory machines and message-passing programming. The students will gain the knowledge and skills needed for developing parallel software by writing programs for a variety of parallel computers. |
CS 4381 | Practical Game Development | This course teaches practical aspects of computer game design and implementation. Topics include graphics game engines, game physics, AI methods applied to games, and software architectures for computer games. Students will gain knowledge and skills needed for game development via team projects. |
CS 4388 | Computer Graphics | A study of the hardware and software used in graphic representation and interpretation of data. |
CS 4395 | Independent Study in Computer Science | Open to undergraduate students on an independent basis by arrangement with the faculty member concerned. Requires department chair approval. Course is not repeatable for credit. |
CS 4398 | Software Engineering Project | Students undertake a software development project. They work in teams, developing requirements and designs which they will implement and test. |