Computer Science (CSC)

CSC 100 The Beauty and Joy of Computing 3

A broad-based introduction to key concepts and principles of computer science. Exploration of seven big ideas of computing: creativity, abstraction, data, algorithms, programming, the Internet, and impact of computing.

CSC 101 Introduction to Computer Concepts 3

Introduction to computers and computing. Topics cover impact of computers on society, ethical issues, hardware, and software applications.

CSC 105 Data, Computing, and Quantitative Reasoning 3

Problem-based introduction to quantitative reasoning, including computational methods; formulation of quantitative arguments; algorithmic understanding, selection, and utilization; data modeling, interpretation, and summarization of results, on real world datasets.

MAC: MAC Quantitative Reasoning

CSC 110 Computational Problem Solving 3

Using computing to apply mathematical concepts in developing algorithmic solutions to real-world problems, stressing analysis and logical reasoning. A modern programming language will be introduced for examples and assignments.

Prerequisites: Non-Computer Science majors only or permission of instructor.

CSC 120 Introduction to Computer Programming for Non-Majors 3

Introduction to computer programming for non-computer science majors, including programming concepts of variables, expressions, decision statements, iteration, functions, and modular design. Language and applications chosen to be relevant to non-majors.

CSC 130 Introduction to Computer Science 3

Programming in a high-level language. Emphasis on problem analysis, problem-solving techniques, and software design principles and techniques.

Prerequisites: Grade of at least C (2.0) in MAT 120, MAT 150, MAT 151, MAT 183, MAT 184, MAT 190, MAT 191, or MAT 196.

Notes: Computer Science majors should not take MAT 120, MAT 183, or MAT 184.

CSC 220 Elementary Data Structures-A Transition 3

Comparison between Java and other high level languages. Advanced syntax of Java. Emphasis on modularization and abstraction. Big-O analysis of algorithms. Design and use of abstract data types with various implementations.

Prerequisites: Grade of at least C (2.0) in CSC 120 or permission of the instructor.

CSC 230 Elementary Data Structures and Algorithms 3

Advanced syntax of high level language taught in CSC 130. Emphasis on modularization and abstraction. Big-O analysis of algorithms. Design and use of abstract data types with various implementations.

Prerequisites: Grade of at least C (2.0) in CSC 130.

CSC 250 Foundations of Computer Science I 3

An introduction to the fundamental ideas underlying contemporary computer science with a focus on the computation and construction of objects.

Prerequisites: Grade of at least C (2.0) in CSC 130 or permission of instructor.

CSC 261 Computer Organization and Assembly Language 3

Introduction to the organization of the computer through the use of Assembly Language programming. Data representation, parts of the computer system, Assembly Language fundamentals, instruction sets, memory, and floating-point operations.

Prerequisites: Grade of at least C (2.0) in CSC 130 or permission of instructor.

CSC 300X Experimental Course 1-6

This number reserved for experimental courses. Refer to the Course Schedule for current offerings.

CSC 312 Ethics in Computer Science 1

Historical and social context of computing, ethical responsibilities of the computing professional, intellectual property rights, and risks and liabilities.

Prerequisites: Grade of at least C (2.0) in CSC 230 and in CSC 250, or permission of instructor.

Notes: Computer Science majors only.

CSC 330 Advanced Data Structures 3

Static and dynamic data structures emphasizing binary trees and graphs. Advanced programming techniques. Advanced sorting and searching algorithms. Hashing techniques. Performance analysis. Methods of developing large applications programs.

Prerequisites: Grade of at least C (2.0) in CSC 220 or CSC 230 and in CSC 250 or MAT 253.

CSC 339 Concepts of Programming Languages 3

Concepts of block-structured, object-oriented, functional, logic, and concurrent programming languages. Comparative study of syntactic and semantic features of these languages and writing programs using them.

Prerequisites: Grade of at least C (2.0) in CSC 330.

CSC 340 Software Engineering 3

Practical and theoretical concepts of software engineering.

CIC: CIC College Writing

Prerequisites: Grade of at least C (2.0) in CSC 330.

CSC 350 Foundations of Computer Science II 3

High level concepts in the theoretical foundations of computer science.

Prerequisites: Grade of at least C (2.0) in CSC 250, or permission of instructor.

CSC 362 System Programming 3

System programming with emphasis on processes, memory management, multithreaded programming, synchronization and deadlocks, interprocess communication, parallel and distributed computing, networking, files systems, security, signals, and virtualization containers.

Prerequisites: Grade of C or better in CSC 230 and CSC 261, or permission of instructor.

CSC 405 Data Science 3

Problem-based learning introduction to Data Science, including programming with data; data mining, munging, and wrangling; statistics, analytics, and visualization, towards scientific, social, and environmental challenges.

Prerequisites: A grade of B+ or better in CSC 330 and (STA 271 or STA 290), or permission of instructor (prior programming and statistics experience is required).

CSC 407 Network Analysis 3

Concepts and methods of network analysis, including network data extraction, management, model, visualization, and analysis of network structure and dynamics.

Prerequisites: Grade C or better in CSC 330, or permission of instructor.

CSC 410 Big Data and Machine Learning 3

Big data definitions and characteristics, computing environment for big data management and processing, machine learning models and algorithms, and scaling up machine learning (high dimensionality reduction).

Prerequisites: A grade of C or better in CSC 330 and (STA 271 or STA 290), or permission of instructor.

CSC 411 Advanced Data Science 3

Experiential learning towards advanced concepts of Data Science, including efficient and parallel programming with large scale datasets, advanced data organization and storage, applied machine learning and inferencing, towards real-world challenges.

Prerequisites: A grade of B+ or better in CSC 405 and CSC 410.

CSC 415 Computer Graphics 3

Survey of graphics algorithms, data structures, and techniques.

Prerequisites: Grades of at least C (2.0) in CSC 340, CSC 350, and either MAT 292 or MAT 296, or permission of instructor.

CSC 416 Digital Image Processing 3

Image representation, enhancement, compression, coding, restoration, and wavelet transforms.

Prerequisites: Grades of at least C (2.0) in CSC 330, CSC 350, and either MAT 292 or MAT 296, or permission of instructor. Successful completion of STA 271 or STA 290 recommended.

CSC 417 Deep Learning in Computer Vision 3

Concepts of state-of-the-art deep learning architectures, algorithms for various computer vision tasks (e.g., such as image classification, object detection, semantic segmentation, image generation, and high-dimensional image analysis), and hands-on exercises and project.

Prerequisites: Grade C or better in CSC 330, or permission of instructor.

CSC 425 Bioinformatics 3

Introduction to the problems and methods in Bioinformatics. Problem areas include restriction mapping, map assembly, sequencing, DNA arrays, and sequence comparison.

Prerequisites: Permission of instructor.

CSC 427 Numerical Analysis and Computing 3

Number systems and errors, solutions of non-linear and linear systems, interpolation, numerical differentiation and integration, solution of differential equations. Implementation of numerical methods using a high-level programming language.

Prerequisites: Grade of at least C (2.0) in MAT 293 or MAT 296, or permission of instructor.

CSC 429 Artificial Intelligence 3

Logical foundations, knowledge representation and reasoning, search, and selected topics such as natural language processing and reasoning under uncertainty.

Prerequisites: Grade of at least C (2.0) in CSC 330 and CSC 350 or permission of instructor.

CSC 439 Introduction to Compiler Design 3

Basic techniques of compiler design and implementation: lexical analysis, parsing, code generation. Sizable programming project implementing a compiler for a block-structured language with strong typing.

Prerequisites: Grades of at least C (2.0) in CSC 261 and CSC 330 or permission of instructor.

Notes: Successful completion of CSC 432 helpful.

CSC 442 Human-Computer Interface Development 3

Survey of concepts and techniques for human-computer interface development. Topics include user-centered design, user interface programming, and usability evaluation.

Prerequisites: Grades of at least C (2.0) in CSC 340 or permission of instructor.

CSC 452 Theory of Computation 3

Finite state automata and regular expressions, context-free grammars, push-down automata and their use in parsing, overview of language translation systems, models for programming language semantics, computability and undecidability.

Prerequisites: Grade of at least C (2.0) in CSC 350. or permission of instructor.

CSC 454 Algorithm Analysis and Design 3

Sequential algorithm design and complexity analysis. Dynamic programming. Greedy algorithms. Graph algorithms. Selected advanced topics from NP-completeness; approximation, randomized, parallel, number-theoretic algorithms; Fast Fourier Transform; computational geometry; string matching.

Prerequisites: Grade of at least C (2.0) in CSC 330.

CSC 461 Principles of Computer Architecture 3

Hardware and software components of computer systems, their organization and operations. Topics: comparative instruction set architectures, microprogramming, memory management, processor management, I/O, interrupts, and emulation of processors.

Prerequisites: Grades of at least C (2.0) in CSC 261, CSC 330, and CSC 350, or permission of instructor.

CSC 462 Principles of Operating Systems 3

Techniques and strategies used in operating system design and implementation: managing processes, input/output, memory, scheduling, file systems, and protection.

Prerequisites: Grades of at least C (2.0) in CSC 340 and CSC 362 or permission of instructor.

Notes: Successful completion of CSC 461 helpful.

CSC 471 Principles of Database Systems 3

Contemporary database systems. Emphasis on query processing, design, and implementation of applications in relational (SQL) databases. Introduction to other database models such as XML, object-oriented, and deductive.

Prerequisites: Grade of at least C (2.0) in CSC 330, or permission of instructor.

CSC 474 Principles of Data Mining 3

Foundation and principles of data mining-Architecture, languages, data preparation and core algorithms including association mining, classification and clustering will be discussed. Topics such as graph mining may also be covered.

Prerequisites: CSC 471 or permission of instructor.

CSC 477 Principles of Computer Networks 3

Hardware and software components of computer networks, their organization and operations. Topics: open system interconnection; local area networks; TCP/IP internetworking, routing, and packet switching; network programming.

Prerequisites: Grades of at least C (2.0) in CSC 261 and CSC 330, or permission of instructor.

CSC 478 Principles of Wireless Networks 3

Digital communications, communication networks, wireless communication technology, wireless networking, wireless LANs, and wireless network programming.

Prerequisites: Grades of at least C (2.0) in CSC 330 and CSC 477, or permission of instructor.

CSC 481 Principles of Computer Security 3

Core concepts in computer security, including the security goals of confidentiality, integrity, and availability; authentication; access control; security software development; use of cryptography; and basic network security.

Prerequisites: Grade of C or better in CSC 330 and CSC 362, or permission of instructor.

CSC 485 Modern Cryptography 3

Theory and practice of cryptography, emphasizing formal models and security reasoning. Primitives covered include private and public-key encryption, message authentication codes, hash functions, digital signatures, secret sharing, and zero-knowledge proofs.

Prerequisites: A grade of C or better in CSC 481, or permission of instructor.

CSC 487 Network Security 3

The course explores the network security concepts of communication protocols; security in routing; remote authentication; access policies; web security; network vulnerabilities; intrusion detection and prevention; and network traffic analysis.

Prerequisites: Grade of C or better in CSC 481 or permission of instructor.

CSC 490 Senior Capstone 3

Application of classroom knowledge and skills in computer science to solve real-world problems and to develop research and development skills.

CIC: CIC College Writing

Prerequisites: Permission of instructor. student must be in the final semester of major coursework.

CSC 492 Directed Study in Computer Science 1-3

Directed Study in Computer Science.

CSC 493 Honors Work in Computer Science 3

Research in a topic of special interest at the Honors level.

Prerequisites: Permission of instructor.

Notes: May be repeated for credit when topic changes.

CSC 494 Directed Study in Computer Science 1-3

Notes: Grade: Pass/Not Pass (P/NP).

CSC 495 Selected Topics in Computer Science 3

A topic of special interest is studied in depth.

Prerequisites: Junior standing and permission of instructor.

Notes: May be repeated for credit for a total of 6 s.h. when topic of study changes.

CSC 605 Data Science 3

Problem-based learning introduction to Data Science, including programming with data; data mining, munging, and wrangling; statistics, analytics, and visualization, towards scientific, social, and environmental challenges.

Prerequisites: Permission of instructor (prior programming and statistics experience is required).

CSC 607 Network Analysis 3

Concepts and methods of network analysis, including network data extraction, management, model, visualization, and analysis of network structure and dynamics.

CSC 610 Big Data and Machine Learning 3

Big data definitions and characteristics, computing environment for big data management and processing, machine learning models and algorithms, and scaling up machine learning (high dimensionality reduction).

CSC 611 Advanced Data Science 3

Experiential learning towards advanced concepts of Data Science, including efficient and parallel programming with large scale datasets, advanced data organization and storage, applied machine learning and inferencing, towards real-world challenges.

Prerequisites: Grade of B+ or better in CSC 605 and CSC 610.

CSC 615 Computer Graphics 3

Survey of graphics algorithms, data structures, and techniques.

CSC 616 Digital Image Processing 3

Image representation, enhancement, compression, coding, restoration, and wavelet transforms.

CSC 617 Deep Learning in Computer Vision 3

Concepts of state-of-the-art deep learning architectures, algorithms for various computer vision tasks (e.g., such as image classification, object detection, semantic segmentation, image generation, and high-dimensional image analysis), hands-on exercises and project, and research topics.

CSC 625 Bioinformatics 3

Introduction to the problems and methods in Bioinformatics. Problem areas include restriction mapping, map assembly, sequencing, DNA arrays, and sequence comparison.

Prerequisites: Permission of instructor.

CSC 626 Advanced Bioinformatics 3

Advanced topics in bioinformatics related to sequence comparison and database search, fragment assembly of DNA, physical mapping of DNA, phylogenetic trees, genome rearrangements, and molecular structure prediction.

Prerequisites: CSC 526 or permission of instructor.

CSC 627 Numerical Analysis and Computing 3

Number systems and errors, solutions of non-linear and linear systems, interpolation, numerical differentiation and integration, solution of differential equations. Implementation of numerical methods using a high-level programming language.

CSC 629 Artificial Intelligence 3

Logical foundations, knowledge representation and reasoning, search, and selected topics such as natural language processing and reasoning under uncertainty.

CSC 630 Fundamentals of Health Informatics 3

Introduction to healthcare data, data systems, and different kinds of applications of analytics for health care, including clinical and research applications.

Notes: Students cannot receive credit for both IAH 630 and CSC 630.

CSC 631 Artificial Intelligence in Healthcare 3

Problem-based learning with artificial intelligence approaches of data science, data mining, statistics, and machine/deep learning, directed towards solving quantitative problems in the domain of healthcare analytics.

Notes: Students cannot receive credit for both IAH 631 and CSC 631.

CSC 632 Ethics and Intellectual Property for Informatics and Analytics 3

Students engage relevant ethical and legal issues pertaining to datafication and intellectual property for informatics and analytics. Students conduct ethics and intellectual property research for a particular domain and produce reports and presentations using reproducible methods.

Notes: Students cannot receive credit for both IAL 632 and CSC 632.

CSC 639 Introduction to Compiler Design 3

Basic techniques of compiler design and implementation: lexical analysis, parsing, code generation. Sizable programming project implementing a compiler for a block-structured language with strong typing.

Notes: Successful completion of CSC 652 is helpful.

CSC 640 Software Engineering 3

Organization and scheduling of software engineering projects and structured software design. Specification methods, metrics, software engineering tools, design, prototyping, version control, and testing.

CSC 642 Human-Computer Interface Development 3

Survey of concepts and techniques for human-computer interface development. Topics include user-centered design, user interface programming, and usability evaluation.

CSC 652 Theory of Computation 3

Finite state automata and regular expressions, context-free grammars, push-down automata and their use in parsing, overview of language translation systems, models for programming language semantics, computability and undecidability.

CSC 653 Advanced Theory of Computation 3

Computability theory including Church-Turing thesis (Turing machines, variants, other models), decidability (decidable and undecidable problems for automata and grammars, the halting problem), reducibility (undecidability of mathematical truth).

Prerequisites: CSC 452, CSC 652, or permission of instructor.

CSC 654 Algorithm Analysis and Design 3

Sequential algorithm design and complexity analysis. Dynamic programming. Greedy algorithms. Graph algorithms. Selected advanced topics from NP-completeness; approximation, randomized, parallel, number-theoretic algorithms; Fast Fourier Transform; computational geometry; string matching.

CSC 655 Advanced Topics in Algorithms 3

Modern development of algorithm design and analysis for sequential and parallel computers; parallel, number-theoretic, probabilistic, and approximation algorithms, string matching, computational geometry, NP-completeness: worst-case versus average-case.

Prerequisites: Grade of at least C in CSC 454 or CSC 654.

CSC 656 Foundations of Computer Science 3

Introduces the mathematical foundations that support advanced studies in computer science including computer programming and the analysis of algorithms.

CSC 661 Principles of Computer Architecture 3

Hardware and software components of computer systems, their organization and operations. Topics: comparative instruction set architectures, microprogramming, memory management, processor management, I/O, interrupts, and emulation of processors.

CSC 662 Principles of Operating Systems 3

Techniques and strategies used in operating system design and implementation: managing processes, input/output, memory, scheduling, file systems, and protection.

Notes: Successful completion of CSC 661 is helpful.

CSC 663 Advanced Topics in Computer Systems 3

Distributed and parallel systems. High-speed and wireless networks. Mobile computing. Communication, synchronization, distributed shared memory, real-time and fault-tolerant systems; current implementations.

Prerequisites: CSC 330 and CSC 567 or CSC 561 or CSC 562 or permission of instructor.

Notes: May be repeated for credit when topics vary.

CSC 671 Advanced Database Systems 3

Modern database models. User interface and operations. Applications design. Introduction to multi-database systems: interoperability and data integration. Selected topics of current interest.

CSC 672 Database System Architecture 3

File organization and indexing techniques. Query processing and optimization. Concurrency control and crash recovery. Distributed and heterogeneous database systems. Selected topics of current interest in database and knowledge-base systems.

Prerequisites: CSC 471 or CSC 671 or permission of instructor.

CSC 674 Principles of Data Mining 3

Foundation and principles of data mining-Architecture, languages, data preparation and core algorithms including association mining, classification and clustering will be discussed. Topics such as graph mining may be also covered.

Prerequisites: CSC 471 or permission of instructor.

CSC 676 Topics in Database Systems 3

Selected topics of current interest such as: deductive databases, modeling and management of uncertain and inaccurate information, multi-database systems, data mining, on-line analytical processing and data warehousing.

Prerequisites: CSC 671 or permission of instructor.

CSC 677 Principles of Computer Networks 3

Hardware and software components of computer networks, their organization and operations. Topics: open system interconnection; local area networks; TCP/IP internetworking, routing, and packet switching; network programming.

CSC 678 Principles of Wireless Networks 3

Digital communications, communication networks, wireless communication technology, wireless networking, wireless LANs, and wireless network programming.

Prerequisites: CSC 677 or permission of instructor.

CSC 681 Principles of Computer Security 3

Core concepts in computer security, including the security goals of confidentiality, integrity, and availability; authentication; access control; security software development; use of cryptography; and basic network security.

CSC 685 Modern Cryptography 3

Theory and practice of cryptography, emphasizing formal models and security reasoning. Primitives covered include private and public-key encryption, message authentication codes, hash functions, digital signatures, secret sharing, and zero-knowledge proofs.

Prerequisites: Grade of C or better in CSC 481 or CSC 681 or permission of instructor.

CSC 687 Network Security 3

The course explores the network security concepts of communication protocols, security in routing, remote authentication, access policies, web security, network vulnerabilities, intrusion detection and prevention, and network traffic analysis.

Prerequisites: Grade of C or better in CSC 481 or CSC 681 or permission of instructor.

CSC 692 Directed Study in Computer Science 1-3

Directed Study in Computer Science.

CSC 693 Advanced Topics in Computer Science 3-6

Algorithms, architecture, languages, systems, theory, or other areas of computer science.

Prerequisites: Permission of instructor.

Notes: May be repeated once for credit.

CSC 694 Directed Study in Computer Science 1-3

Notes: Grade: Pass/Not Pass (P/NP).

CSC 697 Research Problems in Computer Science 3

Advanced research in specialized areas of computer science under the direction of a faculty member. Preparation for master's thesis.

Prerequisites: Permission of instructor.

Notes: Grade: Satisfactory/Unsatisfactory (S/U).

CSC 698 Project in Computer Science 3-6

Prerequisite: Permission of instructor;

Notes: May be repeated for up to 6 credit hours with permission of instructor. Grade: Satisfactory/Unsatisfactory (S/U).

CSC 699 Thesis 1-6

Individual guidance in the development of a specific research problem.

CSC 701 Doctoral Student Orientation 3

Introduction to computer science research and standards in different areas of computer science. Particular emphasis on research in the department with faculty-presented research presentations.

Prerequisites: Permission of instructor.

CSC 705 Data Science 3

Problem-based learning introduction to Data Science, including programming with data; data mining, munging, and wrangling; statistics, analytics, and visualization, towards scientific, social, and environmental challenges.

Prerequisites: Permission of instructor (prior programming and statistics experience is required).

CSC 707 Network Analysis 3

Concepts and methods of network analysis, including network data extraction, management, model, visualization, and analysis of network structure and dynamics.

CSC 709 Big Data and Machine Learning 3

Big data definitions and characteristics, computing environment for big data management and processing, machine learning models and algorithms, and scaling up machine learning (high dimensionality reduction).

CSC 710 Advanced Topics in Algorithms 3

In-depth exploration of an advanced topic in algorithms. Topic varies by semester, and includes topics such as randomized algorithms, parallel algorithms, online algorithms, approximation algorithms, and quantum computing/algorithms.

Prerequisites: CSC 654.

CSC 711 Advanced Data Science 3

Experiential learning towards advanced concepts of Data Science, including efficient and parallel programming with large scale datasets, advanced data organization and storage, applied machine learning and inferencing, towards real-world challenges.

Prerequisites: Grade of B+ or better in CSC 705 and CSC 709.

CSC 712 Advanced Topics in Image Processing 3

In-depth exploration of an advanced topic in image processing. Topic varies by semester, and includes topics such as image enhancement, image analysis, machine (deep) learning-based image processing.

Prerequisites: CSC 616.

CSC 715 Computer Graphics 3

Survey of graphics algorithms, data structures, and techniques.

CSC 716 Digital Image Processing 3

Image representation, enhancement, compression, coding, restoration, and wavelet transforms.

CSC 717 Deep Learning in Computer Vision 3

Concepts of state-of-the-art deep learning architectures, algorithms for various computer vision tasks (e.g., such as image classification, object detection, semantic segmentation, image generation, and high-dimensional image analysis), hands-on exercises and project, and research topics.

Prerequisites: Permission of instructor.

CSC 721 Advanced Computer Graphics 3

Advanced computer graphics algorithms, data structures, and techniques.

Prerequisites: CSC 715 or permission of instructor.

CSC 722 Advanced Topics in Computer Security 3

In-depth exploration of an advanced topic in computer security. Topic varies by semester, and includes topics such as system security, software security, web security, and network security.

Prerequisites: CSC 681.

CSC 724 Advanced Topics in Networks 3

In-depth exploration of an advanced topic in networks. Topic varies by semester, and includes topics such as cloud systems, data center services, network computing, Internet of Things, social networks, software defined networks, and network security.

Prerequisites: CSC 677.

CSC 725 Bioinformatics 3

Introduction to the problems and methods in Bioinformatics. Problem areas include restriction mapping, map assembly, sequencing, DNA arrays, and sequence comparison.

Prerequisites: Permission of instructor.

CSC 726 Advanced Bioinformatics 3

Advanced topics in bioinformatics related to sequence comparison and database search, fragment assembly of DNA, physical mapping of DNA, phylogenetic trees, genome rearrangements, and molecular structure prediction.

Prerequisites: CSC 725 or permission of instructor.

CSC 727 Numerical Analysis and Computing 3

Number systems and errors, solutions of non-linear and linear systems, interpolation, numerical differentiation and integration, solution of differential equations. Implementation of numerical methods using a high-level programming language.

CSC 729 Artificial Intelligence 3

Logical foundations, knowledge representation and reasoning, search, and selected topics such as natural language processing and reasoning under uncertainty.

CSC 730 Advanced Topics in Artificial Intelligence 3

In-depth exploration of an advanced topic in artificial intelligence. Topic varies by semester, and includes topics such as natural language processing, argument mining, and intelligent tutoring systems.

Prerequisites: CSC 629.

CSC 732 Advanced Topics in Databases 3

In-depth exploration of an advanced topics in database. Topic varies by semester, and includes topics such as complex data types, big data analytics, parallel and distributed databases, advanced indexing, advanced application development, and blockchain databases.

Prerequisites: CSC 671.

CSC 734 Advanced Topics in Bioinformatics 3

In-depth exploration of an advanced topic in bioinformatics. Topic varies by semester, and includes topics such as ontologies, big biological data analysis, hypothesis testing for biological applications, text mining and natural language processing, etc.

Prerequisites: CSC 626.

CSC 736 Advanced Topics in Machine Learning 3

In-depth exploration of an advanced topic in machine learning. Topic varies by semester, and includes topics such as statistical computing approaches, model building techniques, graph analytics, big data analytics, and emerging machine learning approaches.

Prerequisites: CSC 610.

CSC 738 Software Engineering 3

Organization and scheduling of software engineering projects and structured software design. Specification methods, metrics, software engineering tools, design, prototyping, version control, and testing.

CSC 739 Introduction to Compiler Design 3

Basic techniques of compiler design and implementation: lexical analysis, parsing, code generation. Sizable programming project implementing a compiler for a block-structured language with strong typing.

Notes: Successful completion of CSC 752 is helpful.

CSC 740 Current Research in Computer Science 3

Discussion of current research in an area of computer science not covered by available current research courses, including problems in theoretical computer science, programming languages, software engineering, or other areas.

Prerequisites: Permission of instructor.

CSC 741 Current Research in Artificial Intelligence 3

Discussion of current research in a focused problem area of artificial intelligence, which could include problems in natural language processing, argument mining, or intelligent tutoring systems. Topics will be announced with each offering.

Prerequisites: Permission of instructor.

CSC 742 Current Research in Systems 3

Discussion of current research in a focused problem area of computer systems, which could include problems in operating systems, architecture, networking, or security. Topics will be announced with each offering.

Prerequisites: Permission of instructor.

CSC 743 Current Research in Database 3

Discussion of current research in a focused problem area of database, which could include problems in data warehousing and online analytical processing, data mining, social networks, or data streaming.

Prerequisites: Permission of instructor.

CSC 744 Human-Computer Interface Development 3

Survey of concepts and techniques for human-computer interface development. Topics include user-centered design, user interface programming, and usability evaluation.

CSC 745 Computing Research with Applications in Physical Sciences 3

Discussion of current research in a focused problem area of interdisciplinary computational research spanning across domains including but not limited to biology, chemistry, and geography. Problems will include novel computational approaches and developments in computer science with applications in one of the physical sciences.

Prerequisites: Permission of instructor.

CSC 746 Computing Research with Applications in Social Sciences 3

Discussion on research problems and solutions for large-scale datasets in the domain of Social Sciences. Research topics could include distributed databases, data mining/fusion/privacy, machine learning and/or statistical approaches.

Prerequisites: Permission of instructor.

CSC 747 Computing Research with Applications in Health Sciences 3

Discussion of current research in the domain-focused problems for health sciences which include biomedical image processing/analysis, multimodal/high-dimensional/longitudinal biomedical data analysis, machine/deep learning, and statistical analysis.

Prerequisites: Permission of instructor.

CSC 752 Theory of Computation 3

Finite state automata and regular expressions, context-free grammars, push-down automata and their use in parsing, overview of language translation systems, models for programming language semantics, computability and undecidability.

CSC 753 Advanced Theory of Computation 3

Computability theory including Church-Turing thesis (Turing machines, variants, other models), decidability (decidable and undecidable problems for automata and grammars, the halting problem), reducibility (undecidability of mathematical truth).

Prerequisites: CSC 752 or permission of instructor.

CSC 754 Algorithm Analysis and Design 3

Sequential algorithm design and complexity analysis. Dynamic programming. Greedy algorithms. Graph algorithms. Selected advanced topics from NP-completeness; approximation, randomized, parallel, number-theoretic algorithms; Fast Fourier Transform; computational geometry; string matching.

CSC 756 Foundations of Computer Science 3

Introduces the mathematical foundations that support advanced studies in computer science including computer programming and the analysis of algorithms.

CSC 761 Principles of Computer Architecture 3

Hardware and software components of computer systems, their organization and operations. Topics: comparative instruction set architectures, microprogramming, memory management, processor management, I/O, interrupts, and emulation of processors.

CSC 762 Principles of Operating Systems 3

Techniques and strategies used in operating system design and implementation: managing processes, input/output, memory, scheduling, file systems, and protection.

Notes: Successful completion of CSC 761 is helpful.

CSC 763 Advanced Topics in Computer Systems 3

Distributed and parallel systems. High-speed and wireless networks. Mobile computing. Communication, synchronization, distributed shared memory, real-time and fault-tolerant systems; current implementations.

Prerequisites: CSC 667 or CSC 761 or CSC 762 or permission of instructor.

Notes: May be repeated for credit when topics vary.

CSC 765 Advanced Wireless Networks 3

Wireless technology and architecture, wireless network types, wireless network design approaches, wireless application development and wireless network programming.

Prerequisites: CSC 761 or CSC 762 or CSC 777 or permission of instructor.

CSC 771 Advanced Database Systems 3

Modern database models. User interface and operations. Applications design. Introduction to multi-database systems: interoperability and data integration. Selected topics of current interest.

CSC 772 Database System Architecture 3

File organization and indexing techniques. Query processing and optimization. Concurrency control and crash recovery. Distributed and heterogeneous database systems. Selected topics of current interest in database and knowledge-base systems.

Prerequisites: CSC 771 or permission of instructor.

CSC 774 Principles of Data Mining 3

Foundation and principles of data mining-Architecture, languages, data preparation and core algorithms including association mining, classification and clustering will be discussed. Topics such as graph mining may be also covered.

Prerequisites: Permission of instructor.

CSC 775 Principles of XML Databases 3

XML from a database point of view, concentrating on information retrieval (querying) and integration.

Prerequisites: CSC 771 or permission of instructor.

CSC 776 Topics in Database Systems 3

Selected topics of current interest such as deductive databases, modeling and management of uncertain and inaccurate information, multi-database systems, data mining, on-line analytical processing and data warehousing.

Prerequisites: CSC 771 or permission of instructor.

CSC 777 Principles of Computer Networks 3

Hardware and software components of computer networks, their organization and operations. Topics: open system interconnection; local area networks; TCP/IP internetworking, routing, and packet switching; network programming.

CSC 778 Principles of Wireless Networks 3

Digital communications, communication networks, wireless communication technology, wireless networking, wireless LANs, and wireless network programming.

Prerequisites: CSC 777 or permission of instructor.

CSC 781 Principles of Computer Security 3

Core concepts in computer security, including the security goals of confidentiality, integrity, and availability; authentication; access control; security software development; use of cryptography; and basic network security.

CSC 785 Modern Cryptography 3

Theory and practice of cryptography, emphasizing formal models and security reasoning. Primitives covered include private and public-key encryption, message authentication codes, hash functions, digital signatures, secret sharing, and zero-knowledge proofs.

Prerequisites: CSC 781 or permission of instructor.

CSC 787 Network Security 3

The course explores the network security concepts of communication protocols, security in routing, remote authentication, access policies, web security, network vulnerabilities, intrusion detection and prevention, and network traffic analysis.

Prerequisites: CSC 781 or permission of instructor.

CSC 790 Independent Research 1-6

Work on a research problem, supervised by a faculty member.

Prerequisites: Permission of instructor.

CSC 799 Dissertation 1-12

Dissertation Research.

Prerequisites: Permission of instructor.

Notes: May be retaken for a total of at most 30 credits.

CSC 801 Thesis Extension 1-3

Thesis Extension.

CSC 803 Research Extension 1-3

Research Extension.