CS Curriculum
Students majoring in Computer Science must meet all general education and graduation requirements listed in the current SVSU catalog. The Bachelor of Science in Computer Science degree includes at least 124 semester hours of credit. A minor is required (A computational mathematics minor is not permitted). Courses required for an CS major are:
General Requirements (33 or 34 credits required)
- Calculus with Analytic Geometry I and II (4 cr. each)
- Discrete Mathematical Structures (3 cr.)
- Statistics (4 cr.) or Applied Probability & Statistics (3 cr.)
- Analytical Physics I & II (5 cr. each) or General Chemistry I & II (5 cr. each) or Principles of Biology, Zoology and Botany (4 cr., 3cr. and 3 cr., respectively)
- Fundamentals of Communication (3 cr.)
- Technical Report Writing (3 cr.)
- Ethics and Technology (3 cr.)
Major Courses (32 credits required)
CS 116 - Computer Programming I (4 cr.)
This course presents an introduction to the concepts and techniques of computer programming. Emphasis is places on developing the student's ability to apply problem-solving strategies to design algorithms and to implement these algorithms in the C++ language.
CS 216 - Computer Programming II (4 cr.)
This course continues the development of computer programming techniques introduced in the Computer Programming I course. Topics include data abstraction, object-oriented programming, linear and nonlinear data structures, and analysis of sort and search routines, including inheritance, polymorphism, pointers, recursion, lists, linked-lists, stacks, queues, and binary trees.
CIS 311 - Windows Programming Using Visual Basic (4 cr.)
This course presents an introduction to writing Windows applications using Visual Basic. Topics include control structures, data structures, event-driven programming, graphical user interface, error handling, debugging, sequential file processing, records and random-access files, ActiveX, database management, images, animation, and audio.
CS 316 - Data Structures and Algorithm Analysis (4 cr.)
This course presents an introduction to advanced data structures using object-oriented C++ language features. Topics include abstract levels of data type, classes, member functions, accessability, recursion, AVL trees, B-trees and general trees, graphs, sorting, searching, hashing, complexity and efficiency of algorithms, data compressions, and memory management.
CS 331 - Computer Organization and Assembly Language (4 cr.)
This course presents an introduction to low-level computer architecture and its relationship to assembly language programming. Topics include number systems, Boolean algebra, logic gates, simplification of Boolean functions, combinational logic, sequential logic, machine organization, assembly language programming, the interface of low-level language to the architecture and to higher-level programming languages, the assembly/link/loading process, and machine representation of data/instructions.
CS 381 - File and Database Processing (4 cr.)
This course presents an introduction to file structure concepts and database processing. Topics include fundamental file processing operations, physical characteristics of secondary storage, sorting of large files, multilevel indexing and B-trees, hashing and extendible hashing, database systems concepts and architecture, and the relational data model.
CS 446 - Computer Operating Systems (4 cr.)
This course presents an introduction to the design and implementation of both traditional and distributed operating systems. Topics include processes, memory management, file systems, I/O, deadlocks, distributed systems, synchronization, distributed file systems, and case studies.
CS 451 - Programming Languages and Compiler Construction (4 cr.)
This course presents a study of computer programming languages and a comparison in terms of features such as application, type checking, and encapsulation. Topics include a study of grammar, languages, BNF, finite state automata, top-down and bottom-up parsing methods, parsing with and without backups, operator precedence grammars, LL(k), and LR(k) parsers. The course also presents an introduction to compiler development including scanners, syntax checking, and code generators.
Elective Requirements (16 credits required)
Option I (General)
- CS 421/CS 422 - Object-Oriented Design and Development I & II (4 cr. each)
The first course presents advanced techniques in reusable object-oriented design. Topics include UML, using object-oriented libraries, designing with inheritance, debugging and testing, user interface design, and creating object libraries. The second course continues the design, implementation and testing introduced in the first course. Software systems of increasing complexity are developed and tested. Topics include the role of UML in software system definition, design, programming, and testing. Also studied is the creation and use of object-oriented libraries and other techniques for code and experience reuse
or
- CS 401/CS 402 - Computer Networks I & II (4 cr. each)
The first course presents the theoretical concepts necessary to understand the comple problem of computer networking. Topics include computer network architectures and models, bandwith limitations of physical media, analog and digital signaling methods, data link protocols, error detection and correction, medium access control in broadcast networks, routing algorithms, internetworking, the Internet Protocol, connection management, transport services including TCP/UDP, network applications, local area and wide-area networks. The second course extends the theoretical knowledge gained in the first course. Topics include the common gateway interface, network security and network monitoring, scripting and programming languages for computer networks, electronic commerce techniques, web graphics, virtual private networks, construction and administration of internet servers, and the interface to network-connected databases.
Also, add 8 credits from:
- CS 411 - Database (4 cr.)
This course presents concepts in database systems. Topics include the relational data model and relational algebra, the network, hierarchical, and object-oriented data models, normalization and the database design process, database implementation techniques, advanced and emerging trends.
- CS 416 - Algorithms and Complexity (4 cr.)
This course presents advanced concepts in algorithm analysis. Algorithmic topics include the design and analysis of computer algorithms, divide and conquer techniques, dynamic programming, the greedy method, backtracking, algorithms for sorting and searching, graph computations, pattern matching, and NP-complete problems. Topics in the analysis of algorithms include the fundamentals of the theory of computation and complexity theory, computabilitiy, logic, the relationships between complexity classes, NP-completeness, and randomized computation.
- CS 431 - Computer Organization and Architecture (4 cr.)
This course presents an exploration of many aspects of the internal architecture and organization of a computer. Topics include the history of computer system architecture, buses, internal/external memory, I/O devices, computer arithmetic, instruction sets, CPU structure, reduced instruction set computers vs. complex instuction set computers, microprogrammed vs. hard-wired control unit operation, advanced performance-enhancing features, parallel computer architecture, and an overview of digital logic.
- CS 476 - Graphics (4 cr.)
This course presents the basic concepts of computer graphics generation, software and hardware requirements for graphics and its applications. Topics include the X window system, graphics computation over networks, functions of the client and server, graphics input and output devices, interactive program development, graphical and text attributes, construction of panels and buttons, algorithmic techniques for window clipping & viewport transformation, 2-D object transformation, 3-D object modeling and animation, and graphics applications.
- CS 482 - Artificial Intelligence and Expert Systems (4 cr.)
This course presents a study of artificial intelligence and expert systems. Topics include PROLOG programming, search methods, knowledge acquisition, knowledge representation including belief networks, knowledge validation, neural networks, expert system development including uncertainty management methods such as statistical, symbolic, and fuzzy logic, expert system shells, surveys of current expert systems, and future trends.
- Special Topics (1 to 4 cr.)
Option II (Software Engineering)
- CS 421/CS 422 - Object-Oriented Design and Development I & II (4 cr. each)
Also, add 8 credits from:
- CS 411 - Database (4 cr.)
- CS 416 - Algorithms and Complexity (4 cr.)
- CS 482 - Artificial Intelligence and Expert Systems (4 cr.)
- Special Topics (1 to 4 cr.)
Option III (Computer Systems and Networking)
- Computer Networks I and II (4 cr. each)
Also, add 8 credits from:
- CS 411 - Database (4 cr.)
- CS 431 - Computer Organization and Architecture (4 cr.)
- CS 477 - Networked Multimedia Programming (4 cr.)
This course presents a study of programming techniques used to exploit the numerous enabling technologies for multimedia. Topics include the representation of text, images/graphics, audio, and motion video, network programming techniques, the use of graphical Java, OpenGL and/or ActiveX, VRML, web programming techniques, the use of multimedia-oriented application software packages, and assembly-level multimedia instructions.
- Special Topics (1 to 4 cr.)
Other Courses Offered
CS 101 - Using the Internet (3 cr.)
Introduction to the Internet, including policies, addressing, servers and clients. How to search for information using Archie, Gopher, Lynx, Veronica, WAIS and WWW browsers. Also examined are using the library through the Internet, how to e-mail, FTP and Telnet.
CS 105 - Introduction to Computers and Programming (4 cr.)
Introduction to computer capabilities, limitations and applications; computer system organization; input, output and secondary storage devices; CPU components; data communication systems; database management systems; operating systems; the computer's impact on society; problem solving with computers including algorithm development, structured programming and top-down design.
CS 146 Visual Basic Programming (3 cr.)
Algorithm and problem-solving methods; design and development of modular, event-driven programs using the Visual Basic language including numeric and string operations, input and output operations, decision constructs, repetitive constructs, array processing, graphics and sequential and random file processing.
CS 147 FORTRAN Programming (3 cr.)
Introduction to computer systems, computer programming and operating system commands; constants, variables and expressions; conditional and iterative constructs, formatted I/O and character data; arrays; subprograms; computed goto and assigned goto; common storage; equivalent statements; files and additional topics.
CS 160 Microcomputer Software (3 cr.)
Introduction to microcomputer software including the operating system, a word processor, a spreadsheet and a database.
CS 345 UNIX System Administration (3 cr.)
This course presents a study of the administration of a programming-oriented UNIX system. Topics include the UNIX file structure, configuration files in UNIX, daemons, cron/crontab, e-mail, backup and restore, Perl, Java, C-shell, Bourne shell, UNIX commands and command-line options, and UNIX system security.