Course Listing


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 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 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 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 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.