Computer Science (CSC) courses
CSC 600 Hardware, Software, and Troubleshooting Personal Computers
An introduction to the installation, maintenance, troubleshooting, upgrading, simple repair, and management of personal computers found in educational settings. This course will provide numerous laboratory experiences providing hands-on experience with the goal of enabling students to support personal computer laboratories found in PK-12 schools. May be taught concurrently with CSC 500. Cannot receive credit for both CSC 500 and CSC 600.
CSC 605 Web-Based Resources in Educational Settings
CSC 610 Networking and Telecommunications in Educational Settings
An introduction to networking and data communications from an educator's perspective. The course will examine the necessary computer hardware, software, and personnel resources relevant to networking and data communication requirements in various educational settings. Local Area Networks, Wide Area Networks, Network Interconnections, and the internet will be addressed. May be taught concurrently with CSC 510. Cannot receive credit for both CSC 510 and CSC 610.
CSC 611 Algorithms and Advanced Data Structures
A study of algorithms and advanced data structures including graphs, heaps, hashing, self-adjusting data structures, set representations, greedy algorithms, dynamic programming and introduction to NP-complete problems. The course emphasizes on the study of efficiency and algorithm analysis. May be taught concurrently with CSC 325. Cannot receive credit for both CSC 325 and CSC 611.
CSC 612 Advanced Database System Concepts
A study of modern database systems and their underlying concepts. Core topics include the relational model, SQL, database design theory, query processing, file structures, transactions, and concurrency. Programming projects provide practical experience in developing GUI database applications. May be taught concurrently with CSC 335. Cannot receive credit for both CSC 612 and CSC 335.
CSC 613 Computer Systems Fundamentals
An integrated introduction to computer systems fundamentals. Topics include computer architecture and major components, operating system concepts and implementation techniques (processes, threads, memory management, and distributed systems), and network theory, concepts and techniques. May be taught concurrently with CSC 344. Cannot receive credit for both CSC 344 and CSC 613.
CSC 615 Advanced Internet Programming
CSC 621 Compiler Construction
Topics include lexical analysis, parsing, symbol tables, type checking, run-time organization, code generation, basic code optimization, and the use of compiler development tools. The student must write a complete compiler for a small imperative programming language. May be taught concurrently with CSC 521. Cannot receive credit for both CSC 521 and CSC 621.
CSC 625 Computer Graphics
An introduction to two-dimensional and three-dimensional computer rendering. Topics will include computer graphics API's, techniques and algorithms for object modeling, viewing, transformations, and event-driven programming. May be taught concurrently with CSC 525. Cannot receive credit for both CSC 525 and CSC 625.
CSC 626 Methods of Optimization
Convex sets, classical optimization of functions, constrained optimization, search techniques, linear and nonlinear optimization, applications to applied problems. May be taught concurrently with CSC 526. Cannot receive credit for both CSC 526 and CSC 626.
CSC 635 Data Mining
Recommended Prerequisite: equivalent of CSC 232. Introduction to the basic concepts of data mining including data preprocessing, classification, clustering and association rules mining. The focus will be on understanding the algorithms underlying data mining and on the practical use of those algorithms. May be taught concurrently with CSC 535. Cannot receive credit for both CSC 535 and CSC 635.
CSC 640 Introduction to Artificial Intelligence
Recommended Prerequisite: equivalent of CSC 325. Modern techniques for the implementation of goal-directed behavior in intelligent systems, including knowledge representation, search, perception, reasoning, and learning. May be taught concurrently with CSC 540. Cannot receive credit for both CSC 640 and CSC 540.
CSC 645 Computer Speech, Music and Images
This is an applied course focusing on the technical aspects of computer-based multimedia-speech, music, audio, and video. In any given semester, the focus may be more on audio or image processing, or it may be equally balanced between the two. Topics include multimedia data capture and representation, methods of data compression, multimedia information retrieval, and multimedia standards. May be taught concurrently with CSC 545. Cannot receive credit for both CSC 645 and CSC 545.
CSC 655 Software Quality Assurance and Project Management
A broad coverage of software quality and testing including quality assurance, inspections and reviews, software validation and verification, various testing techniques, and related tools. Other topics are essential software project planning steps, cost estimation, productivity metrics, release and configuration management concepts. May be taught concurrently with CSC 455. Cannot receive credit for both CSC 655 and CSC 455.
CSC 660 Operating Systems
Introduction to operating systems concepts, principles, and design. Topics include: processes, threads, CPU scheduling, mutual exclusion, process synchronization, deadlocks, memory management, file systems, i/o systems, disk management, distributed systems, security and protection. May be taught concurrently with CSC 360. Cannot receive credit for both CSC 360 and CSC 660.
CSC 665 Computer Networks
An introduction to the theory, concepts and techniques upon which modern computer networks are based. The emphasis will be on layered network architectures, the design frameworks for both local and wide area networks and communication protocols. May be taught concurrently with CSC 565. Cannot receive credit for both CSC 565 and CSC 665.
CSC 667 Mobile Computing Applications
An introduction to the design, development, and publication of software applications for mobile devices. Course topics will include design and creation of basic and advanced applications, use of an integrated development environment, performance and security issues, and application packaging and distribution mechanisms. May be taught concurrently with CSC 567. Cannot receive credit or both CSC 667 and CSC 567.
CSC 687 Computing for Bioinformatics
This course focuses on computational techniques used in bioinformatics. Topics will include nucleotide and amino acid data representation, sequence alignment, coding sequence prediction, and use of statistical models. Students will learn to use bioinformatics libraries with a script language such as Python or Perl. May be taught concurrently with CSC 587. Cannot receive credit for both CSC 687 and CSC 587.
CSC 690 Advanced Topics in Computer Science
Variable content course with topics in the field of Computer Science. Topics may be identified by title in the schedule of classes. May be repeated in a different topic is offered. May be taught concurrently with CSC 590. Cannot receive credit for both CSC 590 and CSC 690.
CSC 696 Special ReadingsPrerequisite: permission of department head.
Directed study with a faculty member. Periodic conferences with the faculty member are required. A maximum of three credit hours may count towards the degree. May be taught concurrently with CSC 596. Cannot receive credit for both CSC 596 and CSC 696.
CSC 701 Seminar I
Computer Science literature and research methods. Students will read research literature in Computer Science and make presentations describing that research. Students will attend presentations by faculty, visitors, and other students. Graded Pass/Not Pass only.
CSC 702 Seminar IIPrerequisite: CSC 701.
Continuation of CSC 701 with a focus on tools and methods for data analysis. Students will make oral presentations that report experimental results and will attend presentations by faculty, visitors, and other students. Graded Pass/Not Pass only.
CSC 735 Data Analytics
Study of tools, techniques and frameworks for extracting useful information from large data. Study of machine learning algorithms for data analytics. Visual display of results.
CSC 736 Machine LearningPrerequisite: CSC 325.
Machine learning explores the study and construction of algorithms that can learn from data. This study combines ideas from both computer science and statistics. The study of learning from data is playing an increasingly important role in numerous areas of science and technology. This course will familiarize students with several frequently used machine learning models and algorithms to attack real world problems and prepare students for research or industry application of machine learning techniques.
CSC 742 Evolutionary Computing
Principles and applications of programs inspired by biological principles. Genetic algorithms and their use in search and optimization. Problem representation, operators, and control. Artificial life and the use of evolutionary computation in robotics.
CSC 745 Advanced Multimedia Programming
Advanced aspects of computer-based multimedia. Topics may differ from semester to semester but will be chosen from computer vision, speech recognition, gesture recognition, image and audio signal processing, data visualization, and multimedia information retrieval.
CSC 746 Human Computer Interaction
Research and practice in Human-Computer interaction (HCI). Impact of human perception and cognition on user interface design. Tools for building graphical user interfaces (GUIs) and multimodal user interfaces incorporating speech and gesture. Research methods.
CSC 747 Multimedia Communications
This course introduces fundamental technologies for multimedia coding, processing, and communications. Emphasis will be given on content representation, delivery over a variety of networks, and various applications including compression, adaptation, and authentication.
CSC 765 Ubiquitous Computing and Internet of ThingsPrerequisite: CSC 665 or equivalent course or background approved by the instructor.
An introduction to some of the fundamental concepts and state-of-the-art research in the areas of ubiquitous computing (UbiComp). A significant portion of the course will cover the Internet of Things (IoT). Less emphasis will be given to the hardware and device level details. The major focus of this course is Internet Evolution and Wireless Technologies, Location Services in UbiComp, context-aware computing, privacy and security, wearable computing, mobile OS, IoT and data analytics, cloud computing. Students will learn to carry out research in UbiComp and IoT.
CSC 790 Graduate Topics in Computer Science
Variable content course with topics that can change from semester to semester. Topics may be identified by title in the class schedule. May be repeated if a different topic is offered.
CSC 796 Science Internship
Completion of an internship project (480 hours) at a discipline-related business, nonprofit organization, or government agency, approved and supervised by both the departmental and internship advisors. Includes a formal report in the appropriate professional format, and an oral presentation at an approved venue. Graded Pass/Not Pass only. No more than 6 hours may count toward a masters degree.
CSC 798 Research in Computer SciencePrerequisite: permission of department head.
Supervised research in computer science. May be repeated, but no more than 6 hours may count toward the Master of Natural and Applied Science degree.
CSC 799 ThesisPrerequisite: permission of instructor.
Independent research and study connected with preparation of thesis. No more than 6 hours may count toward the Master of Natural and Applied Science degree.