Computer Science Courses

Draft Version
This is a DRAFT catalog for review and advising purposes. Items in this catalog draft are subject to change until the catalog for 2019-2020 academic year will be officially published on August 1, 2019. The statements set forth in this catalog are for informational purposes only and should not be construed as the basis of a contract between a student and this institution. Should changes in a program of study become necessary, those changes will be applied liberally by the institution while the catalog is in draft mode.

CS 100 - Introduction to Programming Concepts and Languages (3 hours)
Gen. Ed. FS
Core Curr. QR
An introduction to programming concepts and languages for non-Computer Science (CS) majors. Topics include the structure and design of algorithms, variables, constants, data types, arithmetic operations, selection and repetition structures, functions, input/output, arrays, structures, files, libraries. Students will design, write, test and run computer programs using a modern programming language as the development tool. Prerequisite: MTH 109 or higher

CS 101 - Introduction to Programming (4 hours)
Gen. Ed. FS
Core Curr. QR
Introduces the fundamental concepts of programming from an object-oriented perspective. Topics include simple data types, control structures (if-else loops, switch statements), introduction to array and string data structures, algorithms, debugging and testing techniques, and social implications of computing. The course emphasizes good software engineering principles and practices, breaking the programming process into analysis, design, implementation, and testing, with primary focus on implementation and development of fundamental programming skills. Prerequisite: MTH 109 or higher

CS 102 - Data Structures (3 hours)
Introduction to concepts of object-oriented programming with review of control structures and data types and array processing. Introduction to the object-oriented programming paradigm, focusing on the definition and use of classes along with the fundamentals of object-oriented design. Overview of programming principles, simple analysis of algorithms, searching and sorting techniques, and an introduction to software engineering issues. Prerequisite: A grade of C or better in CS 101.

CS 140 - Advanced Programming Concepts and Languages (3 hours)
Advanced programming concepts and languages appropriate to computer science and computer information systems. Topics include dynamic memory management, garbage collection, advanced object-oriented concepts, generic programming, exception handling, recursion, overloading. Prerequisite: CS 102

CS 210 - Advanced Data Structures and Algorithms (3 hours)
Advanced topics in object-oriented programming with an emphasis on advanced data structures, algorithms, and software development. Prerequisite: grade of C or better in both CS 102 and CS 140 or equivalents; MTH 120 or equivalent.

CS 215 - Computability, Formal Languages, and Heuristics (3 hours)
Theory of computation and formal languages, grammars, computability, complexity, algorithms, heuristics, and foundations of intelligent systems. Prerequisite: CS 210 or CIS 210 or equivalents; MTH 122 or equivalent.

CS 220 - Computer Architecture (3 hours)
Basics of logic circuit design, modern processor architecture, and assembly language. Overview of principle issues of internal system architecture, including memory, buses, and peripherals. Prerequisite: CS 140 or equivalent.

CS 310 - Information Structures and Management (3 hours)
File organizations and access methods. Sort/merge operations; hashing schemes for storage and retrieval. Projects involve data validation; creation and updating of files; simulation and/or implementation of direct or indexed files. Prerequisite: CS 102.

CS 320 - Symbolic Logic (3 hours)
Logical systems; prepositional and predicate calculi. Truth tables, proofs, tautologies, principles of inference, Boolean algebra, DeMorgan's Laws, quantifiers, representations, and set theory. Cross-listed as PHL 320. Prerequisite: MTH 120.

CS 321 - Operating Systems (3 hours)
Fundamentals of operating systems concepts, design, and implementation. Topics include operating system components and structures, process and thread model, mutual exclusion and synchronization, scheduling algorithms, memory management, I/O controls, file systems, and security. Prerequisite: CS 220.

CS 330 - Net-Centric Computing (3 hours)
Fundamentals of data communications: data transmission, data encoding, digital data communication techniques, data link control, and multiplexing. The Web as a client-server system, building Web applications, network management and security, compression and decompression. Multimedia data technologies, wireless and mobile computing, and event-driven programming. Prerequisite: CS 210 or CIS 210 or equivalent.

CS 360 - Fundamentals of Data Science (3 hours)
Introduction to the knowledge acquisition and discovery process. Cleaning and analyzing data, building machine learning models, model validation and testing, and visualization. A number of machine learning algorithms are introduced such as regression, naive Bayes, decision trees, association rules, and clustering. Feature selection and transformation. Introduction to Distributed Databases and Big Data. Programming languages, such as R and Python are covered at an accelerated pace, as the course assumes as prerequisites two semesters of programming. Emphasis is on the use of such languages for data analysis and modeling. Prerequisite: CS 101 and CS 102 or equivalent.

CS 370 - Database Management Systems (3 hours)
Relational database design, including entity relationship modeling and normalization. Structured query language (SQL) for creating and querying databases. Other topics include the theory of relational databases, including relational algebra, various loading and reporting utilities, and the implementation of database management systems, e.g. how query optimization works. Prerequisite: CS 210 or CIS 210 or CS 360 or equivalent. Consent of instructor for all other students.

CS 390 - Introduction to Software Engineering (3 hours)
Software life cycle and its phases, analysis, process models, design, human-computer interaction and graphic user interface development, testing, verification, validation, tools and applications, and evolution of software systems. Prerequisite: CS 210 or CIS 210 or equivalent.

CS 461 - Artificial Intelligence (3 hours)
Pattern recognition, search strategies, game playing, knowledge representation; logic programming, uncertainty, vision, natural language processing, robotics, programming in LISP and PROLOG. Advanced topics in artificial intelligence. Cross-listed with CS 561. Prerequisite: CS 210 or CS 360 or equivalent.

CS 462 - Machine Learning (3 hours)
Machine learning and intelligent systems. Covers the major approaches to ML and IS building, including the logical (logic programming and fuzzy logic, covering ML algorithms), the biological (neural networks and deep learning, genetic algorithms), and the statistical (regression, Bayesian and belief networks, Markov models, decision trees and clustering) approaches. Students use ML to discover the knowledge base and then build complete, integrated, hybrid intelligent systems for solving problems in a variety of applications. Cross listed with CS 562. Prerequisite: CS 210 or CS 360 or equivalent, and one of the following courses in statistics: MTH 111 or MTH 325 or equivalent.

CS 463 - Knowledge Discovery and Data Mining (3 hours)
Brings together the latest research in statistics, databases, machine learning, and artificial intelligence that are part of the rapidly growing field of knowledge discovery and data mining. Topics covered include fundamental issues, classification and clustering, machine learning algorithms, trend and deviation analysis, dependency modeling, integrated discovery systems, next generation database systems, data warehousing, and OLAP and application case studies. Cross-listed with CS 563. Prerequisite: CS 210 or CS 360 or equivalent, and one of the following courses in statistics: MTH 111 or MTH 325 or equivalent.

CS 472 - Distributed Databases and Big Data (3 hours)
Designing and building enterprise-wide data warehouses. Cover topics related to large distributed databases, including designing distributed databases, replicating data, and concurrency. NoSQL, object-oriented, and multimedia databases and their query languages. Cross-listed with CS 572. Prerequisite: CS 370, CS 210 or CS 360 or equivalent.

CS 480 - Social and Professional Issues in Computing (2 hours)
Introduction to the social and professional issues and practices that arise in the context of computing. Prerequisite: CS 210 or CIS 210 or equivalent; or consent of instructor.

CS 481 - Professional Practicum in Computer Science (0-3 hours)
Special projects under staff supervision on professional practicum in computer science, with near-term economic benefit. Repeatable to a maximum of 3 credit hours. Prerequisite: CS or CIS junior or senior student in good standing; consent of department chair.

CS 490 - Capstone Project I (3 hours)
Core Curr. EL
Applies the concepts and skills learned by undergraduate computer science majors at Bradley University. Students are required to work on a team on a significant software project. Prerequisite: CS 370, CS 390 or equivalents.

CS 491 - Capstone Project II (1-3 hours)
Core Curr. EL
Applies the concepts and skills learned by undergraduate computer science majors at Bradley University. Students are required to work on a team on a significant software project. Prerequisite: CS 490.

CS 493 - Web and Mobile Software Systems (3 hours)
Advanced topics of complex Web-based and mobile software systems: programming methodology, software engineering, components, architectures, services, requirements analysis, design and development models, integrated development environments, testing, quality, platforms. Cross listed with CS 593. For cross listed undergraduate/graduate courses, the graduate level course will have additional academic requirements beyond those of the undergraduate course. Prerequisite: CS 390 or equivalent; or consent of instructor.

CS 497 - Topics in Computer Science (3 hours)
Topics of special interest in computer science area which may vary each time course is offered. Repeatable under a different topic for a maximum of six semester hours. Prerequisite: Consent of instructor.

CS 498 - Directed Individual Studies in Computer Science (1-3 hours)
Individual study or research/development project under supervision of a CS&IS faculty member. May be repeated under a different topic once. Repeatable to a maximum of six semester hours. Prerequisite: Consent of instructor.

CS 502 - Advanced Programming (3 hours)
Introduces the fundamental concepts of programming from an object-oriented perspective with emphasis on advanced programming skills and good software development principles in a closed laboratory setting. Covers topics including object-oriented paradigm, design and programming, fundamental data structures and computing algorithms, and software development principles. If needed, course should be taken during first regular semester at Bradley. Credit for this course does not count towards graduation requirements in any graduate program within the Department of Computer Science and Information Systems. Prerequisite: Graduate standing. Consent of graduate program coordinator; at least two semesters of programming experience.

CS 503 - Programming Methodology (3 hours)
Predicate calculus, Dijkstra's methodology of algorithm development. Algorithm development. Algorithmic language characteristics; syntax, semantics. Postconditions and preconditions. Verification of postcondition states satisfied by algorithmic programs executed from preconditions. Prerequisite: Graduate standing in CS or CIS, or senior standing in CS or CIS, or a grade of C or better in both MTH 120 and CS 102.

CS 510 - Numerical Methods (3 hours)
Introduction to numerical and computational aspects of various mathematical topics: finite precision, solutions to nonlinear equations, and interpolation, approximation, linear systems of equations, and integration. Cross listed as MTH 510. Prerequisite: Graduate standing in CS or CIS, or senior standing in CS or CIS, or CS 101 and MTH 207 and MTH 223.

CS 511 - Numerical Methods II (3 hours)
Continuation of CS/MTH 510: further techniques of integration, ordinary differential equations, numerical linear algebra, nonlinear systems of equations, boundary value problems, and optimization. Cross listed as MTH 511. Prerequisite: Graduate standing in CS or CIS, or senior standing in CS or CIS; or MTH 224 or MTH 345, and CS 510 or MTH 510.

CS 514 - Algorithms (3 hours)
Design and analysis of algorithms. Dynamic structures maintenance and hashing. Searching, sorting, and traversal. Time and space requirements; simplification; computational complexity; proof theory and testing; NP-hard and NP-complete problems. Prerequisite: Graduate standing in CS or CIS, or senior standing in CS or CIS, or CS 210 or CIS 210 or equivalent and one semester of statistics.

CS 516 - Programming Languages (3 hours)
Design concepts of high-level languages. Description languages; grammars and syntax; expressions and data structures; selection and control structures; constructs for input and output; subprograms and parameter communications. Prerequisite: Graduate standing in CS or CIS, or senior standing in CS or CIS, or CS 210 or CS 310 or equivalents.

CS 518 - Programming Language Translation (3 hours)
Overview of programming language translation with emphasis on modern compiler construction. Lexical analysis, parsing, syntax and semantic analysis, code generation, garbage collection, and optimization. Prerequisite: Grade of C or better in CS 210 or CIS 210 or equivalent.

CS 520 - Advanced Computer Architecture (3 hours)
Fundamental computer sub-systems: central processing unit; memory systems; control and input/output units. General purpose computing systems design. Examples from existing typical computers. Prerequisite: Graduate standing in CS or CIS, or senior standing in CS or CIS, or CS 220 or equivalent.

CS 531 - Web Development Technologies (3 hours)
ntroduction to PERL/CGI, XHTML, XML, JavaScript and scripting languages. Web page design and layout. Client and server side development of web applications. Database connectivity, Java Database Connectivity (JDBC). Prerequisite: Graduate standing in CS or CIS, or senior standing in CS or CIS, or CS 102 or equivalent.

CS 532 - Advanced Java Computing (3 hours)
Developing Web-based systems using J2EE Java technologies. Topics include Java Security, Java GUI development using IDE, Java Servlets and JavaServer Pages, Java Enterprise JavaBeans, XML and Java Web Services, and Java Transaction Service and Java Message Service. Prerequisite: Graduate standing in CS or CIS, or senior standing in CS or CIS, or CS 531 or equivalent.

CS 561 - Artificial Intelligence (3 hours)
Pattern recognition, search strategies, game playing, knowledge representation; logic programming, uncertainty, vision, natural language processing, robotics, programming in LISP and PROLOG. Advanced topics in artificial intelligence. Cross-listed with CS 461. For cross-listed undergraduate/graduate courses, the graduate-level course will have additional academic requirements beyond those of the undergraduate course. Prerequisite: Graduate standing in CS or CIS. Consent of instructor for all other students with graduate standing.

CS 562 - Machine Learning (3 hours)
Machine learning and intelligent systems. Covers the major approaches to ML and IS building, including the logical (logic programming and fuzzy logic, covering ML algorithms), the biological (neural networks and deep learning, genetic algorithms), and the statistical (regression, Bayesian and belief networks, Markov models, decision trees and clustering) approaches. Students use ML to discover the knowledge base and then build complete, integrated, hybrid intelligent systems for solving problems in a variety of applications. Cross listed with CS 462. For cross-listed undergraduate/graduate courses, the graduate-level course will have additional academic requirements beyond those of the undergraduate course. Prerequisite: Graduate standing in CS or CIS. Consent of instructor for all other students with graduate standing.

CS 563 - Knowledge Discovery and Data Mining (3 hours)
Brings together the latest research in statistics, databases, machine learning, and artificial intelligence that are part of the rapidly growing field of knowledge discovery and data mining. Topics covered include fundamental issues, classification and clustering, machine learning algorithms, trend and deviation analysis, dependency modeling, integrated discovery systems, next generation database systems, data warehousing, and OLAP and application case studies. Cross-listed with CS 463. For cross-listed undergraduate/graduate courses, the graduate-level course will have additional academic requirements beyond those of the undergraduate course. Prerequisite: Graduate standing in CS or CIS. Consent of instructor for all other students with graduate standing.

CS 571 - Database Management Systems (3 hours)
Relational database design, including entity relationship modeling and normalization. Structured query language (SQL) for creating and querying databases. Other topics include the theory of relational databases, including relational algebra, various loading and reporting utilities, and the implementation of database management systems, e.g., how query optimization works. Prerequisite: Graduate standing in CS or CIS, or senior standing in CS or CIS, or CS 210 or CIS 210 or equivalent.

CS 572 - Distributed Databases and Big Data (3 hours)
Designing and building enterprise-wide data warehouses. Cover topics related to large distributed databases, including designing distributed databases, replicating data, and concurrency. NoSQL, object-oriented, and multimedia databases and their query languages. Cross-listed with CS 472. For cross-listed undergraduate/graduate courses, the graduate-level course will have additional academic requirements beyond those of the undergraduate course. Prerequisite: Graduate standing in CS or CIS, and CS 571. Consent of instructor for all other students with graduate standing.

CS 590 - Fundamentals of Software Engineering (3 hours)
Software engineering: software product; prescriptive process models; system engineering; analysis modeling; design engineering; architectural design; user interface design; testing strategies and techniques; software systems' implementation; software systems' maintenance. Prerequisite: Graduate standing in CS or CIS, or senior standing in CS or CIS, or CS 390 or equivalent.

CS 591 - Software Project Management (3 hours)
Methods of PMBOK-based management of software systems design and development projects, including systems view, main project management process groups and knowledge areas, management plans, project metrics and estimates, tools for project management, project reports and documentation. Cross listed with CIS 491 and CIS 591 courses. For cross listed undergraduate/graduate courses, the graduate level course will have additional academic requirements beyond those of the undergraduate course. Prerequisite: Graduate standing in CS or CIS, or senior standing in CS or CIS, or CS 390 or equivalent, or consent of instructor.

CS 592 - Requirements Development (3 hours)
Covers topics including basic concepts and principles of software requirements engineering, the requirements engineering process, requirements elicitation, requirements analysis, requirements specification, system modeling, requirements validation and requirements management, and techniques, methods, and tools for requirements engineering and software systems requirements modeling (including structured, object-oriented and formal approaches to requirements modeling and analysis). Prerequisite: Graduate standing in CS or CIS, or senior standing in CS or CIS, or CS 210 or CIS 210 or equivalent, or consent of instructor.

CS 593 - Web and Mobile Software Systems (3 hours)
Advanced topics of complex Web-based and mobile software systems: programming methodology, software engineering, components, architectures, services, requirements analysis, design and development models, integrated development environments, testing, quality, platforms. Cross listed with CS 493. For cross listed undergraduate/graduate courses, the graduate level course will have additional academic requirements beyond those of the undergraduate course. Prerequisite: Graduate standing in CS or CIS, or senior standing in CS or CIS, or CS 390 or equivalent.

CS 612 - Automata, Computation and Complexity (3 hours)
Theory of formal languages and computability, Automata, Turing machines, grammars. Context free and context sensitive languages; parsing. Recursion theory; limits of effective computability, P and NP class of problems, NP-complete problems. Non Turing computable problems, reducibility, complexity. Prerequisite: Graduate standing in CS or CIS, or CS 502 or equivalent.

CS 614 - Parallel Algorithms (3 hours)
Parallel algorithms for multi-processor computer architectures: concurrent programming, SIMD and MIMD systems, and time complexity. Prerequisite: Graduate standing in CS or CIS, or CS 514 or equivalent.

CS 625 - Operating Systems Design (3 hours)
Advanced concepts in operating system design. Topics include process and thread management, virtual memory, interprocess communication, distributed systems, parallel and distributed file system designs, resource management, and security and protection. Prerequisite: Graduate standing in CS or CIS, or CS 321 or equivalent.

CS 635 - Data Communications and Networks (3 hours)
Fundamentals of data communication, computer network architectures and protocols, wireless networks, network programming, and network security. Emphasis on OSI, TCP/IP, ATM, and IEEE 802 LAN layered architectures, and TCP/IP network programming. Prerequisite: Graduate standing in CS or CIS, or CS 330 or equivalent.

CS 681 - Professional Practicum in Computer Science (0 hours)
Special projects under Smith Career Center supervision on student's professional practicum in corporate/business environment in computer science, with near-term economic benefit. Satisfactory/Unsatisfactory. Minimum of 5-10 hours per week required. Prerequisite: Graduate CS or CIS student in good standing; consent of department chair and graduate program director.

CS 690 - Advanced Topics in Software Engineering (3 hours)
Special software engineering research and development projects under staff supervision. Emphasis on a specific topic and emerging technologies in the software engineering area. Prerequisite: Graduate standing in CS or CIS, or CS 590 or CS 591 or equivalents, or consent of instructor.

CS 697 - Advanced Topics in Computer Science (3 hours)
Special projects under staff supervision on advanced problems in numerical or non-numerical branches of computer science. May be taken more than once under different topics for a maximum of 6 semester hours. Prerequisite: Consent of instructor.

CS 698 - Directed Individual Studies in Computer Science (1-3 hours)
Individual study in an area of computer science relevant to the student's professional goals and not covered in a formal course offered by the department. May be repeated twice for a maximum of 6 credit hours. Prerequisite: Consent of instructor.

CS 699 - Thesis in Computer Science (0-6 hours)
Computer science research and thesis preparation. Required of candidates choosing the thesis option. Total of 6 semester hrs. to be taken in one or two semesters. Prerequisite: Consent of department chair