Pictured | Matthew Janosik | B.S., Computer Programming | Granger, Indiana (hometown)
Computer Science | CSCI
P Prerequisite | C Co-requisite | R Recommended
I Fall Semester | II Spring Semester | S Summer Session/s
- CSCI-A 106 Introduction to Computing (3 cr.) P: Testout available. The use of computers in everyday activities. How computers work; use of packaged programs for word processing, spreadsheets, file management, communications, graphics, etc. lecture and laboratory. May not be taken for graduation credit after CSCI-C 101. I, II, S
- CSCI-A 107 Advanced Microcomputing (4 cr.) P: CSCI-A 106 with a grade of C- or above; or equivalent. Introduction to computer programming utilizing languages within standard application tools. Emphasizes problem solving, interface design principles, and documentation writing. I, II
- CSCI-A 201 Introduction to Programming I (3-4 cr.) P: Must have earned a grade of C or better in MATH-A 100 or a math ALEKS assessment score of 36 or better to enroll. Fundamental programming constructs, including loops, arrays, classes and files. General problem-solving techniques. Emphasis on modular programming, user-interface design, and developing good programming style. Not intended for computer science majors. I, II, S
- CSCI-A 290 Tools for Computing (1-4 cr.) P: Varies (depends on the topic). Exploration of topics in computing. Common topics include tools for power users. May be repeated for up to 6 credits.
- CSCI-A 340 An Introduction to Web Programming (3 cr.) P: CSCI-A 201 or CSCI-C 101 or INFO-I 210. Must have earned a grade of C- or better in the prerequisite course. Note: Does not satisfy a computer science major elective requirement. Does not satisfy a computer science elective requirement. An introduction to programming web documents, including HTML, JavaScript and Perl. Creation of a simple web site, including a home page with dynamic elements, using both client-aide and server-side techniques. (Not intended for computer science majors.) II
- CSCI-A 504 Introductory C++ Programming (2 cr.) Undergraduate computer science majors should take CSCI-C 101. Credit not given for both CSCI-A 504 and CSCI-C 101. Topics include aspects of C++ that are not object-oriented, basic data structures, standard libraries, and Unix tools for project management. I, II, S
- CSCI-A 505 Object Oriented Programming (4 cr.) Fundamental concepts of software engineering, algorithm development, computer programming, objects, and data structuring. Emphasis on understanding how software is developed, writing small programs, and learning to read code with understanding. Will include a weekly closed laboratory session for most of the course. I, S
- CSCI-A 506 Object-Oriented Programming C++ (2 cr.) P: CSCI-A 504. Credit not given for both CSCI-A 506 and CSCI-C 201. Undergraduate computer science majors should take CSCI-C 201. Topics include objects, classes, encapsulation, inheritance, polymorphism, templates, and exceptions. I, II
- CSCI-A 510 Database Management Systems (3 cr.) P: CSCI-A 505. Fundamental concepts and practices in design and implementation of database management systems. Topics include data modeling, functional dependencies, normalization, relational, hierarchical, network and object oriented data models, relational algebra, relational calculus, data definition and manipulation languages, SQL, recovery, concurrency, security, distribution and integrity of data. II
- CSCI-A 515 Telecommunications and Computer Networking (4 cr.) P: CSCI-A 505. Fundamental concepts and technologies used in design of computer networks and the Internet. The architecture of the Internet and performance issues. Low-level technologies ranging from Ethernet to wireless will be compared. Packet switching and virtual circuits. Core protocols of the Internet: TCP (Transport Control Protocol) and IP (Internet Protocol). Ongoing and future changes in the Internet. I
- CSCI-A 593 Computer Structures (3 cr.) P: CSCI-A 506 or CSCI-C 201. Credit not given for both CSCI-A 593 and CSCI-C 335. Undergraduate computer science majors should take CSCI-C 335. Structure and internal operation of computers. The architecture and assembly language programming of a specific computer are stressed, in addition to general principles of hardware organization and low-level software systems. Lecture and laboratory. I, II
- CSCI-A 594 Data Structures (3 cr.) P: CSCI-C 201, CSCI-C 506. Credit not given for both CSCI-A 594 and CSCI-C 243. Undergraduate computer science majors should take CSCI-C 243. Systematic study of data structures encountered in computing problems; structure and use of storage media; methods of representing structured data; and techniques for operating on data structures. Lecture and laboratory. I, II
- CSCI-B 100 Problem Solving Using Computers (4 cr.) P: Must have earned a math ALEKS assessment score of 10 or better to enroll. Notes: Computer Science and Informatics Majors should take MATH courses concurrently. Students who have successfully completed AP Computer Science Principles in High School with a score of 4 or 5 are given credits for this course. Students who have successfully completed AP Computer Science A in High School with a score of 3 are given credits for this course. Consult a CS Faculty Advisor. This course introduces problem solving techniques, critical thinking skills, algorithm development, and computer programming, using real-world problems. Topics include: computer literacy, hardware, data representation, structured and object oriented programming techniques, modularity and reusability, and testing and debugging techniques.
- CSCI-B 401 Fundamentals of Computing Theory (3 cr.) P: CSCI-C 243 and CSCI-C 250. Must have earned a grade of C- or better in all prerequisite courses. Fundamentals of formal language theory, computation models and computability, the limits of computability and feasibility, and program verification.
- CSCI-B 424 Parallel and Distributed Programming (3 cr.) P: CSCI-C 243 or INFO-I 308. Must have earned a grade of C- or better in the CSCI/INFO prerequisite course. P or C: MATH-M 301. Must have earned a grade of C or better in the MATH prerequisite course. Notes: Credit not given for both CSCI-B 424 and CSCI-B 524. Credit not given for both CSCI-B 424 and CSCI-B 524. Overview of parallel computers, shared memory, message passing, MIMD and SIMD classifications. Understanding and use of message passing and synchronization facilities such as MPI. Study of parallel programming models such as master-slave, client-server, task-farming, divide-and-conquer and pipeline. Performance analysis of parallel systems, execution time, time complexity, load balancing and scalability.
- CSCI-B 438 Fundamentals of Computer Networks (3-4 cr.) P: CSCI-C 243 or INFO-I 308; and CSCI-C 335. Must have earned a grade of C- or better in prerequisite courses. History, theory, and design of data communicating between devices. Topics include history of computer networks, network architecture and topology, local- and wide-area networks, ISO network layers, current and future IEEE standards for networks, and network operating systems.
- CSCI-B 451 Security in Computing (3 cr.) P: CSCI-C 335 with a grade of C- or better. An introduction to computing security to include confidentiality, integrity and availability triad, cryptography, software security, operating system security, trusted operating system design and evaluation, authentication, network threats and defenses, security management, legal aspects of security, privacy and ethics.
- CSCI-B 503 Algorithms Design and Analysis (3 cr.) P: CSCI-C 243 and MATH-M 260 or MATH-M 365 or MATH-M 463. Credit not given for both CSCI-C503 and C455. Models, algorithms, recurrences, summations, growth rates. Probabilistic tools, upper and lower bounds; worst-case and average-case analysis, amortized analysis, dynamization. Comparison-based algorithms: search, selection, sorting, hashing. Information extraction algorithms (graphs, databases). Graphs algorithms: spanning trees, shortest paths, connectivity, depth-first search, breadth-first search.
- CSCI-B 524 Parallelism in Programming Languages and Systems (3 cr.) P: CSCI-C 243, MATH-M 301. Credit not given for both CSCI-B 524 and B424. Fundamentals of parallel computation, with an emphasis on parallel programming methodology and programming languages. Topics include: parallel algorithms. Major paradigms for parallel software construction: data parallelism, task/thread parallelism and CSP. Compiling programs for parallel computers.
- CSCI-B 538 Networks and Distributed Computing (3 cr.) P: CSCI-B 438. R: CSCI-C 435. Layered TCP/IP architecture. LAN technologies (ehernet, wireless, token rings). Switching. Internet addresssing (IP v4, IP v6). Routing protocols. Congestion control (TCP, UDP). Applications (DNS, HTTP, peer-to-peer networks). Selection of topics, inclding DHCP, ICMP, VPNs, multicast, security. Credit given for only one of P438 and P538.
- CSCI-B 539 Applied Cryptography (3 cr.) P: MATH-M 301; AND CSCI-C 455 or CSCI-B 401; AND MATH-M 260 or MATH-M 365 or MATH-M 463. This course covers modern cryptosystems, emphasizing their provable security, concrete design, and applications. Cryptosystems covered include various private-key and public-key encryption schemes that are being used in practice, key exchange protocols and secret sharing schemes, hash functions, digital signatures.
- CSCI-B 541 Hardware System Design I (3 cr.) P: CSCI-A 593 or CSCI-C 335. Credit not given for both CSCI-B 541 and CSCI-C 421. Structured approach to hardware design, exposing performance factors as well as target technologies and their influence on the design process. Basic training in the use of design and simulation software. Lecture and laboratory.
- CSCI-B 551 Elementary Artificial Intelligence (3 cr.) P: CSCI-C 250. Credit not given for both CSCI-B 551 and C463. Introduction to major issues and approaches in artificial intelligence. Principles of reactive, goal-based, and utility-based agents. Problem-solving and search. Knowledge representation and design of representational vocabularies. Inference and theorem proving, reasoning under uncertainty, planning. Overview of machine learning.
- CSCI-B 553 Neural and Genetic Approaches to Artificial Intelligence (3 cr.) P: Permission of instructor. Approaches to the design of intelligent systems inspired by nervous systems, evolution, and animal behavior. Distributed and perceptually-grounded representations. Temporal processing. Perception and action. Genetic search. Unsupervised and reinforcement learning. Comparison of symbolic, subsymbolic, and hybrid approaches to intelligence.
- CSCI-B 561 Advanced Database Concepts (3 cr.) P: CSCI-C 442. Database models and systems: especially relational and object-oriented; relational database design theory; structures for efficient data access; query languages and processing; database applications development; views. Transaction management: concurrency and recovery.
- CSCI-B 581 Advanced Computer Graphics (3 cr.) P: CSCI-C 243, C: MATH-M 301. Credit not given for both CSCI-B 581 and C481. Introduction to graphics hardware and software.Two-dimensional graphics methods, transformations, and interactive methods.Three-dimensional graphics, transformations, viewing geometry, object modeling and interactive manipulation methods. Basic lighting and shading. Video and animation methods.
- CSCI-B 582 Image Synthesis (3 cr.) P: CSCI-C 481 or CSCI-B 581. Raster image display: color theory, gamma correction, and filtering. Advanced shading methods: local illumination models, global illumination models. Surface display, including ray tracing and Z-buffering. Solid modeling; spline surfaces, CSG, superquadrics, and deformations. Scientific visualization: isosurfaces and volume rendering.
- CSCI-B 583 Game Programming and Design (3 cr.) Graduate standing. P: CSCI-C 243. R: CSCI-B 581 or CSCI-C 481. Programming techniques and data structures for game implementation, elements of game design, current trends in the game industry, game theory, social aspects, and elements of artificial intelligence in games.
- CSCI-B 651 Natural Language Processing (3 cr.) P: CSCI-C 463 or CSCI-B 551. Theory and methods for natural language processing. Algorithms for sentence parsing and generation. Context-free and unification grammars. Question-and-answer systems. Analysis of narratives. Finite-state approaches to computational phonology and morphology. Machine translation. Machine learning of natural language. Speech recognition. Neural-network and statistical alternatives to symbolic approaches.
- CSCI-B 657 Computer Vision (3 cr.) P: CSCI-C 463 or CSCI-B 551. Concepts and methods of machine vision as a branch of artificial intelligence. Basics of digital image processing. Local and global tools for deriving information from image data. Model-based object recognition and scene understanding.
- CSCI-B 689 Topics in Graphics and Human Computer Interaction (1-6 cr.) P: Instructor’s permission. Special topics in graphics and human-computer interaction. May be repeated for credit, with permission. May be repeated for up to 6 credits.
- CSCI-C 101 Computer Programming I (3-4 cr.) P: Must have earned a grade of C or better in MATH-A 100 or a minimum 36 ALEKS assessment score. Must have earned a grade of C or better in CSCI-B 100 or INFO-I 101 or CSCI-A 201 or a Level 2 in the CS Placement Exam. Notes: Credit not given for both CSCI-C 101 and INFO-I 210. Students who have successfully completed AP Computer Science A in High School with a score of 4 or 5 are given credits for this course. Consult a CS Faculty Advisor. Fundamental concepts of computer programming, algorithm development, and data structuring. I, II, S
- CSCI-C 106 Introduction to Computers and their Use (3 cr.) P: Must have earned a math ALEKS assessment score of 10 or better to enroll. Recommended: Computer Science and Informatics Majors should take MATH courses concurrently. An introduction to computers and data processing. Includes the historical and current status of data processing and electronic digital computers; a survey of computer applications; foundations of computer programming; survey of programming languages; and the fundamentals of high level language such as BASIC or PASCAL.
- CSCI-C 151 Multiuser Operating Systems (2 cr.) P: CSCI-C 101 or INFO-I 210. Must have earned a grade of C- or better in the prerequisite course. Survey of operating system facilities and commands. Installation and maintenance of operating systems such as Linux. Understanding process management, file systems, memory and virtual memory management issues. Understanding networking and its role in modern computing environments. Operating system security. Writing shell scripts and batch files. Societal issues surrounding the use and administration of multiuser operating systems. I, II
- CSCI-C 201 Computer Programming II (3-5 cr.) P: CSCI-C 101 or INFO-I 210. Must have earned a grade of C- or better in the prerequisite course. Notes: Credit not given for both CSCI-C 201 and INFO-I 211. Intended for students needing a rigorous introduction to computer science, introduction to algorithm design, programming, and analysis. Using the Scheme programming language, course covers procedural and data abstractions, and use of several programing paradigms including functional, imperative, and object-oriented. I, II
- CSCI-C 243 Introduction to Data Structures (3-4 cr.) P: CSCI-C 201 or INFO-I 211; and MATH-M 115 or MATH-M 125 or above, or an ALEKS score of 61 or better; must have earned a grade of C- or better in all prerequisite courses. Introduction to data structure concepts and common applications. Structures to be discussed include strings, lists, queues, stacks, graphs, trees, sequential files, random files, and indexed sequential files. Practical applications and algorithms are stressed. I, II
- CSCI-C 250 Discrete Structures (0-3 cr.) P: CSCI-C 101 or INFO-I 210; and MATH-M 115 or MATH-M 125 or above; or an ALEKS assessment score of 61 or better. Must have earned a grade of C- or better in all prerequisite courses. Mathematical foundations of computing including: set theory, propositional and predicate logic, arguments and patterns of inference, proofs of correctness and mathematical induction. Formal logic, argumentation and verification (proof) are also examined in the context of 'every day' critical thinking.
- CSCI-C 297 Sophomore Topics in Computer Science (2-4 cr.) P: Varies (depends on the topic). Selected topics in computer science appropriate to the student in or nearing the end of the sophomore year. Course may cover a topic selected from but not limited to the following list: programming languages, computer graphics, artificial intelligence, ethics in data processing, and database system. Credit not given for both CSCI-C 297 and CSCI-D 285 in excess of 9 credit hours. May be repeated for up to 9 credits.
- CSCI-C 308 System Analysis and Design (1-4 cr.) P: CSCI-C 243 or INFO-I 308. Must have earned a grade of C- or better in the prerequisite course. Notes: Credit not given for both CSCI-C 308 and INFO-I 450. The software development life cycle; data flow diagrams; entity relationship modeling; structured design; validation; user interfaces; implementation and testing. A team project will be completed. I
- CSCI-C 311 Programming Languages (3-4 cr.) P: CSCI-C 243 and CSCI-C 335. Must have earned a grade of C- or better in all prerequisite courses. Systematic approach to programming languages. Relationships among languages, properties, and features of languages; and the computer environment necessary to use languages. Lecture and laboratory.
- CSCI-C 335 Computer Structures (4 cr.) P: CSCI-C 201 or INFO-I 211. Must have earned a grade of C- or better in the prerequisite course. C: CSCI-C 151. Computer architecture and machine language, internal data representation, assembly systems, macros, program segmentation and linking, I/O devices, serial communication. Projects to illustrate basic machine structure and programming techniques. I, II
- CSCI-C 421 Digital Design (3-4 cr.) P: CSCI-C 335 with a grade of C- or better. Organization and logic design of digital systems. Course presents a structured design philosophy, emphasizing hardware building blocks, circuit synthesis, microprogramming. In the laboratory students build, study, and debug a working minicomputer from elementary hardware components. Lecture and laboratory.
- CSCI-C 431 Assemblers and Compilers 1 (3-4 cr.) P: CSCI-C 311 with a grade of C- or better. Design and construction of assemblers, macro processors, linkers, loaders, and interpreters. Compiler design and construction, including lexical analysis, parsing, code generation, and optimization. Extensive laboratory exercises.
- CSCI-C 435 Operating Systems 1 (3-4 cr.) P: CSCI-C 243 and CSCI-C 335 and three additional computer science major courses at or above the 300-level. Must have earned a grade of C- or better in all prerequisite courses. Organization and construction of computer systems that manage computational resources. Topics include specification and implementation of concurrency, process scheduling, storage management, device handlers, mechanisms for event coordination such as interruption, exclusion, and synchronization. Extensive laboratory exercises II
- CSCI-C 441 Information Orgranization and Retrieval (3 cr.) P: CSCI-C 243 with a grade of C- or better. Organization and logic design of digital systems. Course presents a structured design philosophy, emphasizing hardwired and micro-programmed control. Boolean algebra, hardware building blocks, circuit synthesis, micro-programming. In the laboratory students build, study, and debug a working minicomputer from elementary hardware components. Lecture and laboratory.
- CSCI-C 442 Database Systems (3 cr.) P: CSCI-C 308 or INFO-I 450. Must have earned a grade of C- or better in the prerequisite course. Credit not given for both CSCI-C 442 and INFO-I 451. Study of fundamental concepts, theory and practices in design and implementation of database management systems. Topics include data independence, data modeling, ER modeling, functional dependencies, normalization, relational, hierarchical, network and object oriented data models, relational algebra, relational calculus, data definition and manipulation languages, recovery, concurrency, security, and integrity of data. II
- CSCI-C 455 Analysis of Algorithms I (3-4 cr.) P: CSCI-C 243 with a grade of C- or better and MATH-M 260 with a grade of C or better. R: CSCI-C 250. Algorithm design methodology. General methods for analysis of algorithms. Analysis of the performance of specific algorithms, such as those for searching and sorting. II
- CSCI-C 463 Artificial Intelligence I (3-4 cr.) P: CSCI-C 243 and CSCI-C 250. Must have earned a grade of C- or better in all prerequisite courses. Goals of artificial intelligence, relations with other fields. Introduction to knowledge representation and inference: predicate calculus, frames, semantic networks, and connectionist representation schemes. Pattern recognition and pattern association. Computer vision. Natural language processing: speech recognition, syntax, and semantics. Heuristic search. Extensive laboratory exercises.
- CSCI-C 481 Interactive Computer Graphics (3-4 cr.) P: CSCI-C 243 with a grade of C- or better. Pre-req or Co-Req: MATH-M 301. Must have earned a grade of C or better in the MATH prerequisite course. Computer graphics techniques. Introduction to graphics hardware and software. Two-dimensional graphics methods, transformations, and interactive methods. Three-dimensional graphics, transformations, viewing geometry, object modeling, and interactive manipulation methods. Basic lighting and shading. Video and animation methods. Credit not given for both CSCI-B 481 and CSCI-B 581.
- CSCI-C 490 Seminar in Computer Science (1-4 cr.) P: CSCI-C 243 or INFO-I 308 (additional pre-reqs vary by topic) or department permission. Must have earned a grade of C- or better in all prerequisite courses. Special topics in computer science. May be repeated for up to 12 credits.
- CSCI-N 390 The Natural World (3 cr.) P: This course is open to sophomore, junior, and senior students who have at least one year of college experience. Explores an important scientific or technological issue in modern society. Applies scientific methods and interdisciplinary perspectives in an examination of the subject. Investigates the broader implications and ethical dimensions of scientific research and technological advancement.
- CSCI-P 536 Advanced Operating Systems (3 cr.) P: CSCI-C 435. Advanced topics in operating systems, such as: multitasking, synchronization mechanisms, distributed system architecture, client-server models, distributed mutual exclusion and concurrency control, agreement protocols, load balancing, failure recovery, fault tolerance, cryptography, multiprocessor operating systems.
- CSCI-P 565 Software Engineering I (3 cr.) P: CSCI-C 308. Analysis, design, and implementation of software systems. Requirements specification: data and process modeling. Software design methodologies. Software quality assurance: testing and verification. Software development processes.
- CSCI-Y 398 Internship in Professional Practice (1-6 cr.) P: Departmental approval required. Instructor approval required. Pre-req: CSCI-C 308 and CSCI-C 335 and one other computer science major course above the level of CSCI-C 243. Must have earned a grade of C- or better in all prerequisite courses. Notes: Students considering internship should consult with the Department Internship Co-ordinator at least one semester prior. Designed to provide opportunities for students to receive credit for selected, career-related, full-time or part-time work. Evaluation by employer and faculty sponsor
- CSCI-Y 790 Graduate Independent Study (1-6 cr.) Permission of instructor required. Independent study under the direction of a faculty member, culminating in a written report. May be repeated for credit. R grade not allowed. The different departmental options for independent study are: research and reading, software system development, master’s research project, master’s software project, and a university master’s thesis. May be repeated for up to 9 credits.
- CSCI-Y 798 Professional Practicum/Internship (0-6 cr.) P: Current enrollment in graduate degree program in computer science. Departmental approval and permission of the graduate director and instructor required. Provides for participation in graduate-level professional training and internship experience. May be repeated for up to 6 credits.