Computer Science Student Advising Handout Idaho State University Careers, Jobs, and Flexibility The discipline of Computer Science has arisen as one of the highest-paying 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 computerscience-related 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 5 th 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). Advising Process Students wishing to become computer science majors should contact the CS office to have an advisor assigned to them and to sketch out an initial study plan. ISUDegreeWorks, available through BengalWeb, provides analysis of the student s progress toward a CS major. While taking CS2282, CS majors must complete a Program of Study form, available on the CS web site, and meet with their advisor for its approval. Additional meetings with an advisor are recommended. An approved Program of Study form is required to complete CS2282. For courses transferred from another university to count toward the major, the corresponding ISU CS course must be listed on the student s ISU transcript or there must be an approved petition form in the student s file. Transferring students entering ISU already having completed CS2282, must call the CS office, have an advisor assigned to them, and complete a CS Program of Study form. Throughout their schooling and before the beginning of their final year of study, students should insure that all general education requirements have been completed. Students should then fill in a Computer Science Graduation Check List form, also available on the CS web site, and meet with their advisor for its approval. An approved CS Graduation Checklist form is needed to take CS4488 Laptops and Virtual Machines As part of the Computer Science Program s commitment to lifelong learning, students are expected to adapt to new operating systems, DBMSs, programming languages, development environments, and security protocols. In CS2282 and all subsequent CS courses, CS majors and minors are expected to have laptops with sufficient capacity to run various tools within virtual machines, allowing safe and secure mastery of continually-evolving professional environments. Bachelor of Science in Computer Science Math and Science Courses Computers are fundamentally mathematical devices created by mathematical logicians including Von Neumann, and Turning, and based on the works of Babbage, Boole, and Whitehead/Russell; thus an understanding of mathematical logic and other aspects of discrete math is essential. Computer Scientists are expected to analyze and implement solutions involving calculus, linear algebra, and statistics. Those students interested in graduate school in Computer Science are urged to take Math 3352, Math 2287 rather than Math/CS1187, Math 4450 rather than Math 3350, and additional upper level Mathematics 1
courses; see your computer science advisor for details. All courses for the CS major and minor must be passed with a grade of C- or higher. MATH 1147 * Precalculus 5cr OR MATH 1144 Trigonometry 2cr OR MATH 2275 Calculus III 4cr MATH 1170 Calculus I 4cr MATH 1175 Calculus II 4cr MATH 2240 Linear Algebra 3cr MATH 3350 Statistical Methods 3cr AND MATH 3352 Introduction to Probability 3cr CS/MATH 1187 Applied Discrete Structures 3cr OR MATH 2287 Foundations of Mathematics 3cr PHYS 2211 Engineering Physics 4cr PHYS 2213 Engineering Physics I Laboratory 1cr CHEM 1111 General Chemistry 4cr FIGURE 1 MATHEMATICS AND SCIENCE Computer Science and Related Courses To allow students to have the broadest possible learning experience, students are encouraged to select elective courses. These range from an increased emphasis in Mathematics to a specialization in Computer Security/Information Assurance. Students may also propose specialized courses from other disciplines on a case by case basis. CS 1181 Computer Science and Programming I 3cr CS 1182 Computer Science and Programming II 3cr CS 2275 Computer Organization and Assembly 3cr CS 2282 Advanced Programming 3cr INFO3307 Systems Analysis and Design 3cr INFO3380 Networking and Virtualization 3cr CS 3385 Data Structures and Algorithms 3cr INFO4411 Intermediate Information Assurance 3cr CS 4481 Programming Language, Theory, and Compilers 3cr INFO4407 Database Design and Implementation 3cr CS 4477 Operating Systems 3cr CS 4488 Advanced Software Engineering and Project 3cr FIGURE 2 REQUIRED COMPUTER SCIENCE AND RELATED COURSES Plus 6 Elective Credits From The Following List If Not Used As A Required Course: Any 3000 or 4000 level Computer Science course; INFO 4407, 4487, 4491, 4412 through 4416, 4419, 4499; MGT 3329; EE 3345, 4413, 4416, 4417, 4427, 4475, 4494; MATH 3355, 3356, 4406, 4407, 4408, 4441, 4442, 4450, 4451, 4465, PHIL 4470. (other electives may be approved by the Program Director or Chair on a case by case basis) * 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. 2
Computer Science Minor Some students in other disciplines may find increased knowledge about CS to be useful. The required courses are detailed below: MATH 1170 Calculus I 4cr OR MATH 1160 Business Calculus 3cr CS 1181 Computer Science and Programming I 3cr CS 1182 Computer Science and Programming II 3cr CS 2275 Computer Organization and Assembly 3cr CS 2282 Advanced Programming 3cr FIGURE 3 COMPUTER SCIENCE MINOR Plus six credits from the above list of approved electives for the CS major. Computer Science Courses CS 1181 Computer Science and Programming I 3 credits. Problem solving methods and algorithm development with an emphasis on programming style. CONCURRENT PREREQ: MATH 1147 or MATH 1143 F, S CS 1182 Computer Science and Programming II 3 credits. Object Oriented Programming in the context of sorting and searching, analysis of algorithms, recursion, linked lists, class diagrams, and other data structures and algorithms. Class Diagrams. PREREQ: CS 1181 S CS 1187 Applied Discrete Structures 3 credits. 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. Cross-listed as MATH 1187. PREREQ: CS 1181. S CS 2275 Computer Organization and Assembly 3 credits. 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 architecture-related functions. Virtual memory. Dynamic and static linking. Uses a different programming language. PREREQ: CS 1181. F CS 2282 Advanced Programming I 3 credits. Advanced object oriented programming and software OOP design and development in a modern object-oriented language not previously used. Event driven programming. Elementary threading. UML. Includes a significant software project. Uses a different programming language. PREREQ: CS 1182. F CS 3321 Software Engineering 3 credits. 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. PREREQ: CS 2282 and CS2275 D CS 3331 Web Programming 3 credits. Server- and client-side programming, web-based database programming. PREREQ: CS 2282. D CS 3342 Computer Graphics 3 credits. 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. PREREQ: CS 2282 and MATH 2240. D 3
CS3385 Data Structures and Algorithms 3 credits. 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 OS. PREREQ: CS2282, CS2275 and (CS/Math1187 or Math2287 or MATH 240). S CS 4420 Computer Security and Cryptography 3 credits. Public key and private key cryptography, key distribution, cryptographic protocols, requisite mathematics and selected topics in the development of security and cryptography. PREREQ: CS 3385. D CS 4442 GUI Development 3 credits. Planning and construction of graphical user interfaces and discussion of essential software engineering concepts. PREREQ: CS 2282. D CS 4444 Image and Audio Processing 3 credits. Image/audio acquisition, quantization, spatial and spectral filters, sharpening, smoothing, restoration, compression, segmentation, Fourier and Wavelet transforms. PREREQ: CS/MATH 1187, MATH 3352, and MATH 3360. D CS 4451 Database Theory Design Programming 3 credits. 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. PREREQ: CS 3385. D CS 4470 Parallel Processing 3 credits. Topics in high-performance 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. PREREQ: CS 3385 and CS2275 or CS4475. F CS 4477 Operating Systems 3 credits. 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. PREREQ: CS 2282 and CS 2275. S CS 4480 Theory of Computation 3 credits. Finite representations of languages, deterministic and nondeterministic finite automata, context free languages, regular languages, parsing, Turing Machines, Church s Thesis, uncomputability, computational complexity classes. PREREQ: CS 3385, CS/MATH 1187 or MATH 2287, MATH 1175. D CS 4481 Programming Language, Theory and Compilers 3 credits. Programming language concepts. Regular expressions, context-free grammars, FSAs, stack machines. Theory/algorithms for lexical, syntactic and semantic analysis, recursive descent and parsing, symbol tables, object code generation. Design and implementation of a Compiler. CS 3385, Math 1175, Phys 2211. F CS 4488 Advanced Software Engineering and Project 3 credits. 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. PREREQ: CS 3385 & (CS3321 or Info 3307) & (CS4451 or Info4407). F CS 4492 Special Problems in Computer Science 3 credits. Research and reports on problems or topics in computer science. May be repeated for up to 9 credits with different content. PREREQ: Permission of Instructor. 4
Computer Science Curriculum Prerequisite Chaining and Fall/Spring Offering Schedule Fall CS 1181 co-req Math 1147 Spring CS/Math 1187* CS 1182 Math 1170 CS 2275 Engl 1102** Math 2240* INFO 3380 CS 2282 INFO 3307 CS3385 CS 4477 INFO 4407 CS 4481 CS 4488 INFO 4411 *The prerequisites for CS3385 are CS 2275, CS2282, and either Math2240 or CS/Math 1187 **English 1102 is taken before INFO 3307, which is taken before INFO4407 which is taken before INFO4411 5