Computer Science Major
The discipline of Computer Science has arisen as one of the highestpaying fields in the last decade; the average starting salary for a Computer Science graduate in the USA is more than $63,000/year. The Computer Science Program at ISU can prepare you to succeed in a wide range of exciting computersciencerelated careers including software engineering, databases, computer security, networks, system administration, etc.
While many computer science graduates focus on technical work, the computer science major can also be a general purpose degree leading in a number of additional directions: by adding a minor or second major in Philosophy or Political Science, computer science majors can go into Law; or by adding the minor in Business Administration, they may complete the MBA in a 5th year leading to technical management possibilities. The MBA is also important for those students interested in graduate work as part of the National Information Assurance Training and Education Center (NIATEC).
Required Courses  

Course#  Name  Prereq 
CS 1181  Computer Science and Programming I  MATH 1143 or MATH 1147 (Coreq okay) 
Problem solving methods and algorithm development with an emphasis on programming style. Satisfies Objective 7 of the General Education Requirements.  
CS 1182  Computer Science and Programming II  CS 1181 or INFO 1181 
Objectoriented programming and design. Sorting and searching. Recursion. Eventdriven programming. UML classdiagrams. Secure software design/coding concepts for resilient software systems.  
CS 1187  Applied Discrete Structures  CS 1181 or INFO 1181 
Discrete structures in CS and EE. Boolean algebra and logic; sets, functions, and relations; iteration, recursion, and induction; algorithms; programming in pseudocode; basic counting principles; graphs and trees; and other selected topics from discrete mathematics. Equivalent to MATH 1187.  
CS 2275  Computer Architecture and Assembly  CS 1181 or INFO 1181 
Computer organization from the perspective of instructions, including the central processor, busses, input and output units, and memory units. Instruction sets, loaders and linkers, assembly language, address computation, and other architecturerelated functions. Virtual memory. Dynamic and static linking. Uses a different programming language.  
CS 2282  Advanced Programming  CS 1182 or INFO 1182 
Advanced objectoriented programming and software design and development in a modern objectoriented language not previously used. Event driven programming. Elementary threading. UML. Includes a significant software project.  
CS 3385  Data Structures and Algorithms  CS 2282, CS 2275, (CS/MATH 1187 or MATH 2287 or MATH 2240) 
The design, construction, and analysis of data structures. Abstract data types, lists, stacks, queues, trees, and graphs. Sorting, searching, hashing. Theory. Includes significant coding projects. Uses Linux.  
CS 4477  Operating Systems  CS 2275, CS 2282. 
Processes description and control, threads, concurrency, memory management scheduling, I/O and files, distributed systems, security, networking. Includes Team implementation of a significant portion of an operating system. Uses a different operating system.  
CS 4481  Compilers and Programming Languages  CS 3385, Math 1175, Phys 2211 
Programming language concepts. Regular expressions, contextfree grammars, FSAs,stack machines. Theory/algorithms for lexical, syntactic and semantic analysis, recursive descent and parsing, synmbol tables, object code generation. Design and implementation of a compiler.  
CS 4488  Software Engineering and Senior Project  CS 3385 & (CS3321 or CIS 4403) & (CS4451 or CIS4407) 
Analysis, specification, design, implementation, and testing of a large software project. Formal approach and tools. software lifecycles; human computer interaction; project and team management. Uses a different programming language.  
INFO 3307  Systems Analysis and Design  INFO 1182 or CS 1182 (Coreq okay) or POI 
Develops systems analysis skills, using proven techniques, prototyping, and structured analysis and design phases of the systems development life cycle. The course emphasizes Secure Software Design, which includes secure design elements, software architecture, secure design review, and threat modeling. Requirements: gathering is emphasized, including secure software requirements gathering to capture all of the security requirements from various stakeholders and understand the sources and processes needed to ensure a more effective design.  
INFO 3380  Networking and Virtualization  INFO 2285 or CS 2275 
Study of the implementation and development of network information systems. Protocols and techniques will be compared, and virtualization and cloud computing will be emphasized.  
INFO 4407  Database Design & Implementation  INFO 3307 (Coreq okay) 
Covers multiuser relational database management systems, stored procedures, SQL, transaction processing, etc. The course emphasizes Secure Software Design, which includes secure design elements, software architecture, secure design review, and threat modeling.  
INFO 4411  Intermediate Information Assurance  INFO 2285, CS 2275, INFO 3310, or POI 
Focuses on homeland security, information assurance, integrity, control, and privacy. Covers CNSS4011, NIST80016 standards, national policy, and international treaties. The course considers Software Deployment, Operations, Maintenance and Disposal, including security issues around steady state operations and management of software, as well as security measures that must be taken when a product reaches its end of life.  
Plus six credits from the list of approved electives for the CS major.  


Total Hours: 45 
(Click on any course to see a course description.)
Required NonCS Courses  

Course#  Name  Prereq 
MATH 1147* or MATH 1144 or MATH 2275 
Precalculus or  MATH 1108 
Trigonometry  MATH 1143  
Calculus III  MATH 1175  
MATH 1147: A single onesemester course equivalent to College Algebra (MATH 1143) plus Trigonometry (MATH 1144). Credit cannot be granted in both MATH 1143 and MATH 1147, or in both MATH 1144 and MATH 1147.  
MATH 1144: Circular functions and right triangle approaches to trigonometry. Graphs of trigonometric functions: amplitude, frequency, phase shift. Trigonometric identities, inverse functions, and equations. Introduction to vectors in the plane, polar coordinates, and polar representation of complex numbers.  
MATH 2275: Third course in the sequence MATH 1170, MATH 1175, and MATH 2275. Multivariable calculus. Vector algebra and geometry. Functions of several variables. Differentiation. Optimization. Multiple Integrals. Parametric curves and surfaces. Line and surface integrals. Vector fields. Green's, Stokes', and divergence theorems.  
MATH 1170 (4 hrs)  Calculus I  MATH 1144 or MATH 1147 
First course in the sequence MATH 1170, MATH 1175, and MATH 2275. Realvalued functions of one real variable: limits, continuity, derivatives, integrals, applications. Credit cannot be granted in both MATH 1160 and MATH 1170. Satisfies Objective 3 of the General Education Requirements.  
MATH 1175 (4 hrs)  Calculus II  MATH 1170 
Second course in the sequence MATH 1170, MATH 1175, and MATH 2275. Techniques of integration, trigonometric integrals, improper integrals. Applications of definite integrals. Sequences and series. Parametric curves in the plane, polar coordinates.  
MATH 2240  Linear Algebra  MATH 1170 
Introduction to linear algebra. Linear systems, matrices, determinants, vector spaces, linear transformations, linear independence, eigenvalues and eigenvectors, orthogonalization.  
MATH 3350  Statistical Methods  MATH 1160 or MATH 1170 
A calculusbased introduction to statistical procedures, including simple regression, basic experimental design, and nonparametric methods.  
MATH 3352  Introduction to Probability  MATH 1175 or permission of instructor 
Fundamentals of probability, discrete and continuous random variables, distributions such as binomial, uniform, Poisson, hypergeometric, normal, gamma; expectation; joint, marginal, conditional distributions; central limit theorem; applications to statistics. Emphasizes material needed to develop statistical inference methods.  
CS/MATH 1187 or MATH 2287 
Applied Discrete Structures or  CS 1181 
Foundations of Mathematics  MATH 1170  
CS/MATH 1187: Discrete structures in CS and EE. Boolean algebra and logic; sets, functions, and relations; iteration, recursion, and induction; algorithms; programming in pseudocode; basic counting principles; graphs and trees; and other selected topics from discrete mathematics. Equivalent to CS 1187.  
MATH 2287: Logic and proofs, sets, functions, relations, mathematical induction, and the cardinality of sets.  
PHYS 2211 (4 hrs)  Engineering Physics I  MATH 1175 (Coreq okay) 
Mechanics of particles and rigid bodies; kinetic theory and thermodynamics; electricity and magnetism; wave motion; optics. Partially satisfies Objective 5 of the General Education Requirements. 4 semester hours.  
PHYS 2213 (1 hr)  Engineering Physics I Laboratory  INFO 2285 or CS 2275 
Principles and methods of physical measurement. COREQ: PHYS 2211. Partially satisfies Objective 5 of the General Education Requirements. 1 semester hour.  
CHEM 1111 (4 hrs)  General Chemistry  MATH 1143 or MATH 1147 or equivalent. COREQ: CHEM 1111L. 
Introductory course for students in scientific and technical fields; structure and reactivity of elements and compounds, stoichiometry, states of matter, solutions, and chemical periodicity. May be repeated upon completion of CHEM 1111L. Partially satisfies Objective 5 of the General Education Requirements. 4 semester hours.  
Total Hours: 26 
Notes 

* Students placing directly into MATH 1170 should substitute MATH 2275, 3360, or any of the MATH courses allowed as CS electives as long as they are not also used as CS electives or requirements to result in a total of 30 hours of math and science. Physics 2212 can also be used to meet the 30 hour requirement. 
† Math 4450 can be substituted for Math 3350 in the CS curriculum for students doing dual math / CS majors or interested in CS Graduate School. 
‡ MGT 2216 and 2217 are allowed as alternatives to MATH 3350 and 3352, particularly for those students doing the CS major, the Minor in Business Administration, and the MBA. 
(Click on any course to see a course description.)
Elective/Specialization Courses  

Course#  Name  Prereq 
CS 3321  Software Engineering  CS 2282 and CS 2275 
Techniques and tools for conceiving, designing, testing, deploying, maintaining, and documenting large software systems with particular focus on the Structured analysis and design phases including task analysis, human factors, costs, and project and team management. Cross listed as INFO 3307.  
CS 3331  Web Programming  CS 2282 
Server and clientside programming, webbased database programming.  
CS 3342  Computer Graphics  CS 2282 and MATH 2240 
Covers raster graphics, primitives, scan conversion, geometric transformations, object hierarchies, curves and surfaces, solid modeling, visible surface determination, illumination, shading, manipulation and advanced modeling techniques.  
CS 4420  Computer Security and Cryptography  CS 3385 
Public key and private key cryptography, key distribution, cryptographic protocols, requisite mathematics and selected topics in the development of security and cryptography.  
CS 4442  GUI Development  INFO 3307 
Planning and construction of graphical user interfaces and discussion of essential software engineering concepts.  
CS 4444  Image and Audio Processing  CS/MATH 1187, MATH 3352, and MATH 3360 
Image/audio acquisition, quantization, spatial and spectral filters, sharpening, smoothing, restoration, compression, segmentation, Fourier and Wavelet transforms.  
CS 4451  Database Theory Design Programming  CS 3385 
Data models, relational algebra and calculus, SQL and stored procedures, database design, ER diagrams, normalization theory, data storage, index structures, performance analysis, concurrency control. Database programming language access. Uses a different programming language.  
CS 4470  Parallel Processing  CS 3385 and CS 2275 or CS 4475 
Topics in highperformance computing: parallel architectures, SIMD, MIND, SMP, NUMA models, message passing, cache coherency issues, MPI, PVM, parallel programming languages, cluster and grid approaches, applications and experience programming on a cluster.  
CS 4480  Theory of Computation  CS 3385, CS/MATH 1187 or MATH 2287, MATH 1175 
Finite representations of languages, deterministic and nondeterministic finite automata, context free languages, regular languages, parsing, Turing Machines, Church’s Thesis, uncomputability, computational complexity classes. 
(Click on any course to see a course description.)