Computer Science

Courses

CSC 225. Computer Programming Concepts I. 3 Hours.

Structured programming techniques. Emphasis on control structures, procedures, simple data types, and structured data types, including arrays, records, and files. Assigned problems require considerable time in the computer lab. Prior programming experience is recommended. Course Information: IAI Major Code: CS 911.

CSC 275. Computer Programming Concepts II. 3 Hours.

Extensive top-down design principles to solve non-trivial problems. Emphasis on advanced array applications, dynamic storage, and classes. Programming assignments include implementation of lists, stacks, queues, and recursions. Course Information: Prerequisite: CSC 225. IAI Major Code: CS 912.

CSC 302. Discrete Structures. 4 Hours.

This course is designed to introduce the participants to the topics from discrete structures that are relevant to computer science. Topics covered are not limited to number systems, sets, logic, functions and relations, combinations, permutations, probability and statistics. Course Information: Prerequisite: C or better in college algebra. This course fulfills a general education requirement at UIS in the area of Mathematics (IAI Code: M1905) or UIS: Mathematics Skills. IAI Major Code: CS 915.

CSC 305. Entrance Assessment. 0 Hours.

Evaluation of computer science knowledge on entering the program. CSC 305 must be taken during the student's first semester of enrollment. Course Information: Credit/No Credit grading only.

CSC 316. ECCE: Wired Perspectives. 4 Hours.

This course examines global power inequities such as global North/South, first world/third world, developed and underdeveloped communities. It promotes knowledge and appreciation of the contributions of understudied and undervalued cultures in developing countries. It examines inequalities in resources in a global context. The vehicle this course uses in this discourse is the digital divide, the dichotomy between the global wired and the global tired. Course Information: This course fulfills an Engaged Citizenship Common Experience requirement at UIS in the area of Global Awareness.

CSC 366. Introduction to Networking. 4 Hours.

The course provides an introduction to fundamental concepts of computer networking with practical applications. Topics include data communications, networking technologies, OSI model, Internet architecture, LAN, WAN, TCP/IP layers and protocols, network management. Course Information: Prerequisites: CSC 275.

CSC 367. Introduction to Cybersecurity. 4 Hours.

This course introduces the fundamental concepts of cybersecurity, common cybersecurity vulnerabilities and threats, and techniques and tools for detecting and defending against cyber-attacks. It teaches how to model threats to computer systems.

CSC 368. Systems Programming Languages. 4 Hours.

Design principles and implementation of systems programming languages. Topics include syntax data types, control structures, storage management. Four systems programming software language tools will be studied: shell scripts, Perl, PHP, SQL. Class activities and hands-on laboratories. Typical laboratories and class assignments, repetitive tasks, scheduled file maintenance, log file analysis, electronic administrator notification. Course Information: Prerequisites: CSC 275.

CSC 376. Computer Organization. 4 Hours.

Introduction to elementary computer architecture and assembly/machine language. Emphasis on the fetch-execute cycle and CPU organization, binary information representations, combinational logic, and sequential circuits. An overview of the memory hierarchy and I/O interfaces included as time permits. Course Information: Prerequisites: CSC 275 and CSC 302. CSC 302 may be taken concurrently.

CSC 385. Data Structures and Algorithms. 4 Hours.

Object-oriented software design including sorting and searching algorithms. Implementation of trees, graphs, and other advanced data structures. Algorithm analysis of running times and storage requirements. Course Information: Prerequisites: CSC 275, CSC 302, MAT 113 or MAT 115, MAT 121.

CSC 387. Foundations of Computer Science. 4 Hours.

An overview of selected computer science topics: computers and society, software engineering, file structures, database structures, artificial intelligence, theory of computation, and human-computer interaction. Topics are selected to complement material in the core computer science curriculum. Course Information: Prerequisite: CSC 275.

CSC 388. Programming Languages. 4 Hours.

Design principles and implementation of computer programming languages. Topics include syntax, data types, control structures, storage management, and binding. Four programming language paradigms studied: imperative, object-oriented, functional, and logical. Languages studied may include C#, Smalltalk, Java, LISP, and Perl. Course Information: Prerequisite: CSC 385.

CSC 389. Introduction to Operating Systems. 4 Hours.

This course explores operating system (OS) concepts, design, and implementation. Topics: OS structures, processes, threads, process synchronization, CPU scheduling, memory management, virtual memory file systems, I/O operations, protection, security. Course Information: Prerequisites: CSC 275, CSC 302, MAT 113 or MAT 115, MAT 121, CSC 385, CSC 376. CSC 385 and CSC 376 may be taken concurrently.

CSC 399. Tutorial. 1-12 Hours.

Intended to supplement, not supplant, regular course offerings. Students interested in a tutorial must secure the consent of the faculty member concerned before registration and submit any required documentation to him or her. Course Information: May be repeated to a maximum of 12 hours if topics vary.

CSC 405. Exit Assessment. 0 Hours.

Evaluation of computer science knowledge on graduation. Exit assessment helps students assess the body of knowledge they've attained and helps the program revise its curriculum. CSC 405 must be taken during the student's final semester before graduation. Course Information: Credit/No Credit grading only.

CSC 421. Introduction to Computer Networks. 4 Hours.

Includes CCNA1 & CCNA2 Cisco Networking Academy. Emphasis on LANs, network design, virtual circuits, protocols, routing algorithms, network hardware devices. IP addressing. Labs.

CSC 430. Foundations of Network Security and Information Assurance. 4 Hours.

Students learn to identify system resources at risk to malicious attacks. Network tools designed to detect and prevent unauthorized access are covered. Demonstrations of tools used to assess and identify vulnerability including penetration analysis, scanners and probes are covered. Case studies and exploit scenarios give students hands-on practice reducing network security threats. Course Information: Prerequisites: CSC 366.

CSC 431. Network Security & Computer Ethics. 4 Hours.

This course introduces the basics of network security while describing how the technical decisions associated with network security interact with the values of individuals, organizations, and society. The course includes methods of avoiding, detecting, and analyzing intrusions. Students will examine tradeoffs inherent in security policies, behaviors, and protocols.

CSC 433. Intrusion Detection. 4 Hours.

Topics will include network and host based intrusion, detection, intrusion detection system implementation Schemes, IP packet analysis tools, schemes for analysis including rules and anomaly detection, and attack signatures. Several IDS tools will be explored by demonstration and exercises. These tools will include Windump, Ethereal, and Snort. Case reports of various recognized attacks will be studied.

CSC 437. Introduction to Cryptography. 4 Hours.

This course is an introduction to modern cryptography with the emphasis on the fundamental cryptographic primitives such as symmetric and public-key encryption schemes, secure hash functions, digital signatures, and pseudo-random number generators. It also covers basic security protocols such as origin and message authentication protocols. Course Information: Prerequisites: CSC 302 and CSC 367.

CSC 438. Systems Security and Information Assurance Capstone. 4 Hours.

This is the capstone course for the Systems Security and Information Assurance concentration in the Computer Science Bachelor's Degree. This course will provide a broad look at Information Security, examining the eight security domains as defined by (ISC)2, the sanctioning organization governing the Certified Information Systems Security Professional (CISSP) certification for information security professionals. Course Information: Prerequisites: CSC 366 and one additional security elective.

CSC 452. Web Design. 4 Hours.

Learn basic principles of web design and use HTML, XHTML, XML, CSS (Cascading Style Sheets), design and critic a variety of templates, etc. Topics include elements of good design, fonts, and typography, how to use color, graphics, images, multimedia formats, web layout basics, tackling web navigation, accessibility and usability, web design software, and learn HTML, XML, and CSS. Course Information: Prerequisites: CSC 275 or equivalent computer programming experience.

CSC 453. Web Development and Programming. 4 Hours.

Learn dynamic web page creation and server-side scripting that tailors the content toward the visitor and his or her preferences. A scripting language such as PHP will be taught to enable students to access databases for dynamic content. A comprehensive overview of the basics of PHP, covering important subjects such as control structures, operators, strings and string functions, arrays and array functions, predefined variables, I/O, cookies and sessions, and more. Course Information: Prerequisite: CSC 452.

CSC 465. Windows Network Administration. 4 Hours.

The purpose of this course is to provide students with an organizational and technical look at network administration. Emphasis is placed on Microsoft Windows operating system. The laboratory assignments will involve a considerable amount of hands-on installation, account management, performance monitoring, security, troubleshooting. Course Information: Prerequisite: Familiarity with computer hardware/software.

CSC 470. Topics in Computer Science. 1-4 Hours.

Various topics; description changes according to topic offered. See course schedule for prerequisites. Course Information: May be repeated if topics vary. Students may register in more than one section per term.

CSC 471. Computer Ethics for Computing Professionals. 4 Hours.

Computer ethics explores the interaction between technical decisions and human values. We also study how computing and telecommunications impact society. This class is limited to computer science majors and students with equivalent backgrounds.

CSC 472. Introduction to Database Systems. 4 Hours.

Examine of file organizations and file access methods, as well as data redundancy. Studies various data models including relational, heretical, network, and object-oriented. Emphasis given to the relational data model SQL, the data definition and manipulation language for relational databases, is described, including database security. Course Information: Prerequisites: CSC 275.

CSC 478. Software Engineering Capstone. 4 Hours.

Study of the software life cycle with emphasis on design, documentation, and implementation. Team projects and technical communication skills are emphasized. Students should take this course within their last 12 hours of CSC course work. Course Information: Prerequisite: CSC 385.

CSC 479. Introduction to Artificial Intelligence. 4 Hours.

Problem solving methods, data representation and list processing, state-space search strategies, game playing programs, knowledge representation, logic and theorem proving, question answering systems, and natural language processing. Course Information: Prerequisite: CSC 385.

CSC 482. Algorithms and Computation. 4 Hours.

The course covers methods and techniques for designing efficient algorithms, analyzing their complexity and applying these algorithms to well-known practical problems and applications. Methods for recognizing and dealing with hard problems are studied. Course Information: Prerequisites: CSC 385, CSC 302, MAT 113 or MAT 115, MAT 121.

CSC 484. Introduction to Parallel Processing. 4 Hours.

Familiarizes students with the broad field of parallel computing and parallel algorithms, while giving hands-on experience with computing on a parallel architecture.

CSC 499. Tutorial. 1-12 Hours.

Intended to supplement, not supplant, regular course offerings. Students interested in a tutorial must secure the consent of the faculty member concerned before registration and submit any required documentation to him or her. Course Information: May be repeated to a maximum of 12 hours if topics vary.

CSC 501. Graduate Programming Practicum. 4 Hours.

The course teaches graduate object-oriented programming and development using Java. Students learn how to write, test, and debug advanced-level object oriented programs and how to implement various data structures using Java. Some top-down design principles are covered to solve non-trivial problems.

CSC 502. Problem-Solving Practicum. 4 Hours.

Students will learn key problem-solving skills for interviews for software engineering internships and full-time positions in industry. Students will be encouraged to synthesize the knowledge and the skills they have learned across different courses. Course Information: Prerequisites: CSC 501 or placement exam.

CSC 505. Graduate Summer Internship. 4 Hours.

The course allows students to explore careers and apply knowledge and skills gained in various classes in a work setting. It is intended as a hands-on learning experience to provide students with a number of valuable skills they can use upon graduation. It is not available to workers regularly employed by the company where the internship is proposed. It is available to both domestic and international students. Course Information: Prerequisites: CSC 502.

CSC 532. Introduction to Machine Learning. 4 Hours.

Machine learning explores the design and the study of algorithms that can learn from data or experience, improve their performance, and make predictions. The course provides an overview of many concepts, techniques, and algorithms in machine learning, including supervised learning, unsupervised learning, reinforcement learning, and neural networks. Course Information: Prerequisites: CSC 385.

CSC 533. Data Mining. 4 Hours.

This course teaches advanced techniques for discovering hidden patterns in the rapidly growing data generated by businesses, science, web, and other sources. Focus is on the key tasks of data mining, including data preparation, classification, clustering, association rule mining, and evaluation. Course Information: Course is restricted to MS CSC majors and MS DAT majors only. Prerequisites: CSC 385.

CSC 534. Big Data Analytics. 4 Hours.

This course teaches concepts and techniques in managing and analyzing large data sets. Focus is on big data management, storage solutions, query processing, analytics, and big data applications. Topics include: introduction to Hadoop and YARN, MapReduce, Apache Spark, Big Data Warehousing with Hive and Spark SQL, large scale recommender systems and Large Scale Clustering and Classification. Course Information: Prerequisites: CSC 385, CSC 472, CSC 532 (co-requisite).

CSC 535. Deep Learning. 4 Hours.

Deep learning is among the most used Artificial Intelligence methods and has numerous applications in various domains. This course provides applied and theoretical understanding of Artificial Neural Networks and deep learning. Students will use deep learning to tackle complex problems such as computer vision and language understanding. Course Information: Prerequisites: CSC 385, 532 and knowledge of linear Algebra, calculus and probability.

CSC 540. Graduate Research Seminar. 4 Hours.

Students will investigate research and writing techniques in the field of computer science. Students must produce a formal document that demonstrates they have attained an appropriate understanding of professional ethics and research skills required of IT professionals. CSC 540 serves as the master's closure exercise and must be taken for a letter grade. NOTE: Students who have NOT made satisfactory progress in CSC 540 will be assigned a grade lower than B- and will have to register for and retake the course. Students who have made satisfactory progress in CSC 540, but have not completed the final course document can petition the Department of Computer Science to complete the remaining document by enrolling in CSC 541 Graduate Research Seminar Continuing Enrollment (zero credit hours, one billable hour) for a maximum of two consecutive non-summer semesters.

CSC 541. Graduate Research Seminar Continuing Enrollment. 0 Hours.

Refer to NOTE in course description for CSC 540. Course Information: May be repeated for a maximum of two consecutive non-summer semesters.

CSC 550. Master's Project/Thesis. 4 Hours.

An individual study to demonstrate the ability to formulate, investigate, and analyze a problem and to report results. Written report and oral presentation are required. Guidelines for completing this requirement are available from the CSC program and must be consulted before any work is begun. NOTE: If the project/thesis is not completed during the initial four-hour enrollment, students must register for CSC 551 for zero credit hours (one billable hour) in all subsequent semesters until the project/thesis is completed. Course Information: Credit/No Credit grading only. May be repeated to a maximum of 4 hours. Prerequisite: Approval of the project/thesis supervisor.

CSC 551. Master's Project/Thesis Continuing Enrollment. 0 Hours.

Refer to NOTE in course description for CSC 550. Course Information: May be repeated.

CSC 561. NoSQL Databases. 4 Hours.

Traditional data management techniques (schema-driven databases) do not meet the need to manage the varying storage techniques and technologies used for today's data. NoSQL (Not only SQL) databases have emerged as a means of managing distributed, high-volume, complex data. This course will use a hands-on laboratory approach to explore the different types of NoSQL Databases. Course Information: Course is restricted to MS CSC majors and MS DAT majors only. Prerequisites: CSC 385 and CSC 472.

CSC 562. Data Visualization. 4 Hours.

This course is designed to help students acquire the knowledge and skills to analyze information and, more importantly, to draw conclusions from analysis. This course is not about using advanced mathematics to solve problems. It's about learning to use computer technology, especially visualization (graphs, histograms, pie charts), to look at and understand data in a more intuitive and visual manner. Course Information: Course is restricted to MS CSC majors and MS DAT majors only. Prerequisites: CSC 385.

CSC 564. Computer Security. 4 Hours.

This course provides students with a background, foundation, and insight into the subject of Computer Security at a graduate level. It covers various attack techniques and defenses. The course surveys different threats to computer security and methods for preventing intrusions. We study how computer vulnerabilities arise and survey the controls that can reduce or block security.

CSC 570. Advanced Topics in Computer Systems. 1-4 Hours.

Topics vary. See course schedule for prerequisites. Course Information: May be repeated if topics vary. Students may register in more than one section per term.

CSC 572. Advanced Database Concepts. 4 Hours.

Study of the implementation of relational database management systems. Topics include database design algorithms, query implementation, execution and optimization, transaction processing, concurrency control, recovery, distributed query processing, and database security. One of the following advanced database topics will also be discussed: deductive databases, parallel databases, knowledge discovery/data mining, data warehousing. Course Information: Course is restricted to MS CSC majors and MS DAT majors only. Prerequisites: CSC 472.

CSC 574. Distributed Computing. 4 Hours.

This course covers advanced topics in computer operating systems with a special emphasis on distributed systems. Topics include middleware, naming and directory services, security, remote method invocation, concurrency, transactions, replication, and message passing. Course Information: Prerequisite: CSC 389.

CSC 577. Software Testing and Reliability. 4 Hours.

Advanced and classic models of testing software are reviewed and critiqued. Current practice and novel theories of reliability are studied, using primary computer science research literature. Some automated testing tools will be used. Course Information: Prerequisite: CSC 478.

CSC 583. Network Programming. 4 Hours.

A historical and technical study of network programming. Emphasis is placed on various network protocols and on the TCP/IP protocol in particular. Assignments involve writing client/server code for Unix in the Java programming language. Course Information: Prerequisite: A working knowledge of Unix and the ability to program in Java.

CSC 599. Tutorial. 1-12 Hours.

Intended to supplement, not supplant, regular course offerings. Students interested in a tutorial must secure the consent of the faculty member concerned before registration and submit any required documentation to him or her. Course Information: May be repeated to a maximum of 12 hours if topics vary.