Difference between revisions of "CS Curriculum Revisions 2019-2020"

From Computer Science
Jump to: navigation, search
(CS Concentration)
Line 1: Line 1:
Below are proposed revisions to the CS BS and MS degrees.  A few guiding principals...
+
This page lists proposed changes for the CS programs.  A few guiding principals...
* BS - widen the split between the computing science and information science concentrations - making the IS concentration more doable/attractive to more students, firming up the foundations in the CS concentration, adding a data science concentration.
+
* BS - widen the split between the computing science and information science concentrations - making the IS concentration more doable/attractive to more students, firming up the foundations in the CS concentration, adding a data mining concentration.
 
* MS - new data science concentration, streamline academic concentration
 
* MS - new data science concentration, streamline academic concentration
 
* BS and MS - shift some key courses to be 4-5 hour courses, ensuring a stronger foundation for more students.   
 
* BS and MS - shift some key courses to be 4-5 hour courses, ensuring a stronger foundation for more students.   
  
The # of credits for each course is in ().  Existing requirements that are being eliminated are in <del>strikethrough</del>.
 
  
The learning outcomes for the courses are given in [[CS learning outcomes]].
+
=CS Undergraduate Majors/Minor=
 
+
==Overview==
= Undergraduate Degree - CS BS =
 
 
Note that the [https://catalog.indstate.edu/preview_program.php?catoid=36&poid=5351&returnto=1058 current major] includes 10 courses required of all majors, 5 additional courses required for information science, 3 CS courses required of computing science, and 2 math courses required for computing science.   
 
Note that the [https://catalog.indstate.edu/preview_program.php?catoid=36&poid=5351&returnto=1058 current major] includes 10 courses required of all majors, 5 additional courses required for information science, 3 CS courses required of computing science, and 2 math courses required for computing science.   
  
Line 14: Line 12:
 
[https://catalog.indstate.edu/preview_program.php?catoid=36&poid=5325&returnto=1058 current certificate]
 
[https://catalog.indstate.edu/preview_program.php?catoid=36&poid=5325&returnto=1058 current certificate]
  
==CS Majors/Minor Overview==
+
Names of courses.  '''Bold''' part of CS minor and CS certificate.  # credits in ().
6 semester plan for the undergrad major
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Term !! All/Minor !! CS !! IS !! DS
+
! All (26) !! CS (27) !! IS (24) !! DS (28)
|-
 
| Fall 1 ||            || 151                || 101              || 151, Math 131
 
|-
 
| Spring 1 ||          || 201, Math 131      || 151, CSS 210      || 201, Math 132
 
|-
 
| Fall 2 || stats, 251 || 202, Math 132, 203 || 170, CSS 211      || 202, Math 231
 
|-
 
| Spring 2 ||          || 456                || 201, 203, CSS 331 || Math 313, 401
 
|-
 
| Fall 3 || 499        || 458, 471          || 457, 479          || 457, 475
 
|-
 
| Spring 3 || 470, 499 || 473                || 469              ||
 
|}
 
Names of courses, and ones to be > 3 credit hours
 
{| class="wikitable"
 
|-
 
! All !! CS !! IS !! DS
 
 
|-
 
|-
 
|  
 
|  
23 credit hours<br>
+
Stats - Math 241 or 341 (3)<br>
151 Intro to CS<br>
+
'''151''' Intro to CS (3)<br>
201 Programming Structures (4)<br>
+
'''201''' Programming Structures (4)<br>
203 Discrete Structures / Intro Theory (4)<br>
+
'''303''' Discrete Structures / Intro Theory (4)<br>
251 Intro Systems (5) <br>
+
'''351''' Intro Systems (5)<br>
470 PL<br>
+
470 PL (3)<br>
499 Senior Design<br>
+
499 Senior Design (4)<br>
 
Culminating Exam<br>
 
Culminating Exam<br>
 
  ||  
 
  ||  
27 credit hours<br>
+
Math 131, 132 Calc I, II (8)<br>
Math 131, 132 Calc I, II<br>
+
202 Data Structures and Algorithms (4)<br>
202 Data Struc & Alg (4)<br>
 
 
458 Algorithms (5)<br>
 
458 Algorithms (5)<br>
 
456 Systems (4)<br>
 
456 Systems (4)<br>
471 Op Sys<br>
+
471 Op Sys (3)<br>
473 Networking<br>
+
473 Networking (3)<br>
 
  ||
 
  ||
24 credit hours<br>
+
101 Fundamentals of Computing (3)<br>
101 Fundamentals of Computing<br>
+
CSS 210 Intro to Networking (3)<br>
CSS 210 Intro to Networking<br>
+
CSS 211 Intro to Security (3)<br>
CSS 211 Intro to Security<br>
+
CSS 331 Files and DB (3)<br>
CSS 331 Files and DB<br>
+
170 Web Prog I (3)<br>
170 Web Prog I<br>
+
457 DB (3)<br>
457 DB<br>
+
469 Unix/Linux Adm/Net (3)<br>
469 Unix/Linux Adm/Net<br>
+
479 Web Prog II (3)<br>
479 Web Prog II<br>
 
 
  ||
 
  ||
credit hours<br>
+
Math 131, 132, 231 Calc I, II, III (12)<br>
Math 241 or 341(3)
+
Math 313 Elem Lin Alg (3)<br>
Math 131, 132, 231 Calc I, II, III<br>
+
202 CS II (4)<br>
Math 313 Elem Lin Alg<br>
+
401 Prog for DS (3)<br>
202 CS II<br>
+
457 DB (3)<br>
457 DB<br>
+
475 AI (3)<br>
475 AI<br>
 
401 Prog for DS - math pre/coreqs<br>
 
476 Machine Learning (?) - math pre/coreqs<br>
 
 
|}
 
|}
Prereqs
+
 
 +
Note - courses that are currently part of the major that no longer would be - CS 420 Theory of Computation, CS 421 Formal Methods, CS 451 (changes to become CS 351).
 +
 
 +
Note - courses that we haven't offered in a while - CS 440 Graphics Programming, CS 463 Compilers - what should we do with them?
 +
 
 +
Note - current major is 51-53 credit hours, including 3 credits of 300 level and 25-28 credits of 400 level.
 +
Proposal would be for 50-54 credit hours, including 9-12 credits of 300 level and 16-22 credits of 400 level.  Students need 45 300-400 level credits overall to graduate.  Students will normally have at least about 12 credits of 300-400 level courses as part of Foundational Studies.
 +
 
 +
Note - current proposal for CS Ed minor is - CS 101, CS 151, CS 260, CS 305 Computer Science Teaching Methods, ECT 173 - Fundamentals of Information Technology.
 +
 
 +
Question - also add - programming for the sciences, with CS 151 as a prereq?  Check with NSM chairpersons.
 +
 
 +
Question - DS concentration called Data Mining?
 +
 
 +
Question - Data Mining?
 +
 
 +
Question - electives?
 +
 
 +
==Prereqs==
 
* 101 or 151 -> CSS 210, CSS 211, CSS 311
 
* 101 or 151 -> CSS 210, CSS 211, CSS 311
 
* 151 -> 201, 203, 251, 170
 
* 151 -> 201, 203, 251, 170
 
* 201 -> 202, 470, 499, 457
 
* 201 -> 202, 470, 499, 457
* 202 -> 458, 456, 475
+
* 202 -> 458, 456, 471, 473, 475
* 456 -> 471, 473
+
* 456 -> 471, 473 ??
* 251 -> 456, 469
+
* 351 -> 456, 469, 479
* 203 -> 458, 457
+
* 303 -> 457, 458
 
* 170 -> 479
 
* 170 -> 479
 
* Math 313 -> 401, 475
 
* Math 313 -> 401, 475
 
* Math 231 ->
 
* Math 231 ->
  
==Learning Outcomes==
+
==6 Semester Plan==
===All===
+
{| class="wikitable"
Stats - Math 241 or 341
+
|-
 +
! Term !! All/Minor !! CS !! IS !! DS
 +
|-
 +
| Fall 1 ||            || 151                || 101              || 151, Math 131
 +
|-
 +
| Spring 1 ||          || 201, Math 131      || 151, CSS 210      || 201, Math 132
 +
|-
 +
| Fall 2 || stats, 251 || 202, Math 132, 203 || 170, CSS 211      || 202, Math 231
 +
|-
 +
| Spring 2 ||          || 456                || 201, 203, CSS 331 || Math 313, 401
 +
|-
 +
| Fall 3 || 499        || 458, 471          || 457, 479          || 457, 475
 +
|-
 +
| Spring 3 || 470, 499 || 473                || 469              ||
 +
|}
 +
 
 +
==Course outlines and notes==
 +
 
 +
===Courses required for all concentrations===
 +
CS 151 Intro to CS
 +
* First course for CS track, second course for IS track.
 +
* Note - for the first 3 weeks, they have things to do as well that don't require unix
 +
* Ability to use Unix at the command line
 +
* Basic understanding of files and directories
 +
* Can take a specification and produce code implementing it
 +
* Python3 programming and debugging
 +
* Understanding of primitive data types and basic Boolean logic
 +
* Basic programming concepts such as scope, functions, conditionals and loops, objects and classes, file I/O
 +
* Most important math needed - bases, modular arithmetic, bit operations
 +
* Simple algorithms for searching and sorting and simple mathematical concepts as they relate to programming such as numeric bases, summation and modulus arithmetic.
 +
* Send some stuff to CS 201 instead
 +
 
 +
CS 201 Programming Structures
 +
* Viewed as a 2-course sequence with CS 151, after CS 201 one should be a decent python programmer and have dabbled in key CS topics
 +
* Language is currently python3
 +
* Modular programming, including object-oriented, separating into modules
 +
* Data formats and number systems (binary, decimal, octal, hex), signed/unsigned, two’s complement, floating point, long, int, short char, strings
 +
* Python3 - (nearly) all keywords and operations, scripting and command-line arguments
 +
* Python3 - all builtin functions, use of commonly used libraries (string, re, math, os.path, csv, json, tkinter)
 +
* I/O with different data formats and number systems
 +
* Python3 data structures (lists, tuples, dictionaries) - competent use, can do operations on paper, can do calculations of runtime for each.
 +
 
 +
CS 303 Discrete Structures / Intro Theory
 +
* Logic - De Morgan's law, boolean operations, truth tables, inclusion-exclusion principle
 +
* base systems
 +
* algebra / logarithmic / exponential growth
 +
* Big O, formal and informal definitions of important complexity class (L, P, NP, PSPACE, EXP)
 +
* Concept of a general-purpose computer (maybe TM, maybe VN), Church-Turing thesis
 +
* Proofs - line/geometry/propositional logic, contradiction, induction (weak and strong)
 +
* pattern matching (maybe don't call it DFA's/NFA's/RE's)
 +
* grammars - look at grammar for some programming language (e.g., subset of C) as an example, basic terms and concepts
 +
* Counting - permutations, combinations, binomial theorem, pigeonhole principle
 +
* Discrete probability - definitions, basic theorems/formula, conditional probability, independence, expectation, linearity of expectation
 +
* "Big ideas" - Monty Hall, 100 prisoners problem, probabilistic method
 +
* Number theory - modular arithmetic (division, exponentiation, Euclid's algorithm, inverses), sieve of Eratosthenes, primes, RSA as a big goal
 +
* Graph theory - basic terminology, basic properties, matchings, Hall's marriage theorem, some algorithm or few
 +
 
 +
CS 351 Intro to Systems
 +
* C
 +
* Assembly language - small subset of something real, or something artificial.  Should include key concepts, doing coding in whatever language is chosen.
 +
* Circuit fundamentals - logic gates, decoders, encoders, multiplexors, ROMs, universal gates, adders, flip-flops, latches, Karnaugh Maps, counters, bit pattern detectors, incrementers, multipliers, etc.
 +
* Architecture - CPU design/organization, instruction set, RTL, registers, microcode, pipelining.
 +
* Architecture - memory design/organization including cache, virtual memory, segmentation, paging.
 +
* Architecture - I/O units, buses, interrupts.
 +
* Architecture - parallel / multi-core considerations.
 +
* Linux - more in depth use of the shell, etc. 
 +
* Linux - system calls, including using them to make programs
  
* 151 Intro to CS - (mostly unchanged) unix/linux / files / putty / commands / permissions, bits/bytes/binary, programming in python3 / data types, searching (binary search and linear search) and sorting algorithms (do it on paper for a few, the code in class for at least one), something fun, flow charts
+
CS 470 Programming Languages
* 201 Programming Structures (4) - (mostly unchanged) python3, object-oriented programming, review of files / etc., making modules, bits / bytes / 2's complement / floating point, data types, basic data structures (lists, dictionaries, tuples, trees, arrays with numpy, stack, queue), running time in general and for basic data structures, I/O
+
* Design choices in programming languages - terms, pros/cons, examples, history of programming languages
* 203 Discrete Structures / Intro Theory (4) - (303, more of the basics, little bit of 420) Boolean logic, set theory, gates, modular arithmetic, summation formulae, big O, polynomials / exponentials / logarithms, induction, contradiction, counting, basic number theory, graphs (terminology, basic properties), regular expressions / DFAs
+
* Functional programming, including reasonable sized programming assignments
* 251 Intro Systems (5) - little bit of C, basic architecture (CPU, buses, cache, registers, pipelining, ALU, FPU, GPU, CISC, RISC, interrupts / polling), memory organization, makefiles, little bit of assembly language, file/disk organization
+
* Object-oriented programming - review, including laundry list of terms and such
 +
* Concurrent programming - in particular how programming language design plays a role
 +
* What else?  Logic programming?
 +
* Do some interesting programs in the top-10 tiobe languages (currently - java, C, python, C++, C#, visual basic .net, javascript, php, sql, objective-c)?
  
* 470 PL - functional programming, object-oriented programming, choices in PL design and examples, concurrent programming, logic programming
+
CS 499 Senior Design
* 499 Senior Design - resume, technical interview questions, basic software engineering, project involving web / cloud / DB / mobile app, job search / applying for jobs
+
* prereq - senior standing, CS 201, 203, 251
* Culminating Exam - something in Python for everyone, some DS for everyone, something else (in C + algorithms) for CS only, something else (web stuff) for IS only
+
* 2 credits/term, taken for two terms
 +
* First term - reasonable sized project involving whatever is hot at the moment.  Currently - using a cloud-based system to do a website, app, DB, and have them work together.
 +
* Second term - job search and interview prep - job search, resume, cover letter, interview questions, portfolio, personal website, git, presentation skills
  
 
===CS Concentration===
 
===CS Concentration===
* Math 131, 132 Calc I, II
+
CS 202 Data Structures and Alg
* 202 Data Structures and Algorithms (4) - (the way it should be now) C/C++ programming, many of basic data structures / algorithms in C, big O, more data structures (heap, trie, balanced binary tree, B tree, skip list), graphs (adjacency lists/matrix, BFS, DFS, shortest path, MST), debugging in unix (gdb, sed, awk), STL
+
* C programming - nearly all keywords, operations.  All C data types (and use to review binary, decimal, octal, hex, two's complement, floating point, add in long, int, short char, C strings).  I/O with different data formats and number systems.
* 458 Algorithms (5) - (also a little of 420) graph algs, string algs, dynamic programming / greedy / divide and conquer / graphs / LP / randomized (implemented one of each), basic complexity theory, NP completeness, approximation algorithms, branch and bound / CSP, undecidable languages, Turing-complete / Church-Turing
+
* Memory organization - text, data, heap, stack, malloc, free, pointer arithmetic
* 456 Systems (4) - C programming using unix system calls to make utility programs, making a shell, makefiles / version control, x64 assembly language, (ELF), assemblers, (lex/flex and yacc/bison)
+
* Unix and debugging - gdb, grep, sed, awk, find, compiler options, makefiles, unix regular expressions, reading manual and manual organization, pipes, I/O redirection
* 471 Op Sys - (456 prereq) resource administration/sharing by the OS - memory / CPU / disk, algorithms / tradeoffs / code for all, ext2 file system, scheduling algorithms, concurrency primitives / solutions, unix system calls
+
* Basic data structures - start with Python3 data structures and do them in C (and compare run times).
* Elective from - 473, 475, 457, etc.
+
* Other basic data structures - linked list, stack, queue, heap, sorted array, unsorted array, binary search tree - do code for all either in class or as assignments (an A student should have done code for all of these).
** 473 Networking - protocols (TCP, IP, UDP) - how each works / tradeoffs / issues, higher level protocols (SMTP, etc.), network programming, security (encryption, protocols, programming), client/server programming in C
+
* More data structures - some collection of "other" data structures - balanced binary tree, B tree, skip list, trie, etc.
 +
* Other basic data structures - unsorted versus sorted array, heap, stack, queue, binary search tree.  Can do all on paper, do code for some in class and as assignments.
 +
* Search and sorting - linear and binary search, selection and insertion sort, mergesort, heapsort, quicksort - code for all in class and as assignments
 +
* Asymptotic analysis and running time - big O/Omega/Theta, little o/omega, definitions, basic proofs, polynomials / exponentials / logarithms, recursion trees
 +
* Graphs - terminology, adjacency matrix, adjacency list, basic algorithms (BFS, DFS, shortest path, minimum spanning tree) - do all algorithms on the board, code for some in class, running time for all
 +
* Classes and objects in C++ - data abstraction and encapsulation, defining classes, creating objects, inheritance, protection, virtual functions and polymorphism
 +
* The Standard Template Library
 +
* Comparison of C++ and other OO Languages (Java, Python, etc.)
 +
 
 +
CS 456 Systems
 +
* Version control: Make, RCS, Git
 +
* File system I/O - open/close/read/write, printf/scanf, opendir/closedir/readdir/stat
 +
* Disk organization - inodes, superblocks, etc.
 +
* Local interprocess communication: signals, socketpairs, shared memory.
 +
* Fork and execve: how shells work.
 +
* Regular expressions (review!)
 +
* Condensed introduction to x64 assembly language.
 +
* How assemblers work.
 +
* Structure of ELF files -- use of tools like objdump, readelf, nm, od.
 +
* Lex/flex and yacc/bison examples starting with a simple calculator and then a simple programming language (something on the level of Dartmouth BASIC).
 +
 
 +
CS 458 Algorithms and Theory of Computation
 +
* Some things that are listed under CS 202
 +
* String matching algorithms
 +
* Graph algorithms - BFS, DFS, connected components, shortest path, MST.  Others?
 +
* Linear programming
 +
* Dynamic programming
 +
* Sorting algorithms - quadratic time, merge sort, quick sort, heap sort.  Others?
 +
* NP-complete / optimization problems - definitions and reductions, a few example problems
 +
* NP-complete / optimization problems - approximation algorithms, hardness of approximation
 +
* NP-complete / optimization problems - brute force / backtracking / CSP
 +
* Models of computation - DFA, NFA, CFG, PDA, TM, NTM - definitions and basic properties, normal forms, equivalences, pumping lemmas.
 +
* Complexity classes - definitions, basic properties, example problems, undecidability, diagonalization, reductions.
 +
 
 +
CS 471 Operating Systems
 +
* Review - functions every citizen should know, basic data structures in C
 +
* Device Management, typically focusing on storage devices and filesystems
 +
* ext2 file system in detail
 +
* Other filesystems at a high level
 +
* Process/Thread Management
 +
* Single CPU execution - time slicing, scheduling
 +
* Multi-core execution
 +
* Shared data - semaphores, other mechanisms, synchronization issues, race conditions
 +
* Memory Management
 +
* Memory organization, virtual memory, pages, page faults, CPU cache
 +
* Other Topics, as time allows
 +
 
 +
CS 473 Networking
 +
* History and Operation of Packet Networks and Switched Networks
 +
* Layered Protocols: TCP/IP and (maybe) OSI.
 +
* Socket programming - TCP/UDP - in C.
 +
* Example higher level protocols examined in some detail (e.g., SMTP or HTTP).
 +
* Encryption and the four horsemen of the apocalypse: symmetric block ciphers, cryptographic hashing functions, public key cryptosystems, and cryptographic random number generation.  Discussion of SHA, AES, RSA, TLS.
  
 
===IS Concentration===
 
===IS Concentration===
* 101 Fundamentals of Computing - (similar to AP CSP), hardware, internet, bits/bytes/binary, servers, html, little bit of python, AI, whatever we want them to know before CSS courses
+
CS 101 Fundamentals of Computing
* CSS 210 Intro to Networking -
+
* Somewhat closely parallel AP CS Principles (it happens to work out to what we'd want to do)
* CSS 211 Intro to Security -
+
* basic understanding of how computers work
* CSS 331 Files and DB - repeat of some 251 material (files / directories / file types, shell), also in Windows, little bit of sql, little bit of MS Access, bits/bytes/stuff
+
* basics of programming
* 170 Web Prog I - html, css, javascript, review of files / etc., client/server, glimpse of node / php / sql, regular expressions
+
* how information is stored and transferred between computers
* 457 DB - (skip internally how DB's work) sql, sqlite, mariadb, sql in some PL (python, C, etc.), basic DB theory (concurrency, transactions, consistency, ACID, query optimization, security), ER diagrams, nosql (mongo, xml, basic understanding of some others)
+
* do’s and don’ts of security
* 469 Unix/Linux Adm/Net - files / directories / permissions / ACLs, bash scripting including core utilities (sed, basename, etc.), processes and threads (security, memory, limits), disk I/O / layout / RAID, swap and virtual memory, mariadb administration, administration, networking admin
+
* basic understanding of concepts of computational complexity and artificial intelligence
* 479 Web Prog II - review html/css/javascript, php, sql/mariadb, Ajax, authentication, web sockets
+
 
 +
CS 170 Web Programming I
 +
* Client-server relationship and front-end back-end architecture
 +
* Editors, multi-file projects, code linters, and workflow
 +
* The JavaScript event loop and asynchrony
 +
* The JavaScript prototype and the `this` keyword
 +
* EcmaScript latest additions
 +
* Regular expressions
 +
* Intro to PHP: Hypertext Preprocessor
 +
* Separation of concerns and ideal abstraction
 +
* Build tools and test suites
 +
* Simple back-end in NodeJS
 +
 
 +
CSS 210 Intro Security
 +
 
 +
CSS 211 Intro Networking
 +
 
 +
CSS 311 Files and DB
 +
 
 +
 
 +
CS 457 Databases
 +
* Database Models
 +
* Relational Algebra
 +
* SQL - A reasonably comprehensive introduction to SQL.  SQLite is a very good, easy to use, vehicle for this part of the course.
 +
* Database design: logical design, physical design, security design.
 +
* Database design: ER diagrams, normal forms, functional dependencies, transitive closure, etc.
 +
* Transactions: query processing, ACID, logging, indexing, hashing, B+ trees, joins.
 +
* SQL - More advanced features (PL/SQL functions, triggers, etc.)
 +
* NOSQL: discuss a subset of the following (whatever’s hot)
 +
* XML
 +
* Mongodb
 +
* Redis
 +
* levelDB
 +
* DataFrames - Python/pandas
 +
* Cassandra
 +
* many more possibilities
 +
 
 +
CS 469 Unix/Linux Administration and Networking
 +
* Wild-cards and regular expressions
 +
* Files and directories:
 +
** The file-system tree, path traversal, links
 +
** Unix permissions and ACLs
 +
** The FHS standard: where things go in the file-system
 +
* Bash scripting
 +
** Invocation and startup, job control
 +
** Command lists, pipelines, redirection
 +
** Positional parameters and special variables, data types, the environment
 +
** Functions, variable scope
 +
** Conditionals and loops
 +
** Bash built-ins: read, printf, alias, etc
 +
* The core-utilities: sed, col, grep, tr, basename, dirname, etc.
 +
* Processes and threads:
 +
** Attributes of processes: understanding ps,top, etc output
 +
** /proc filesystem
 +
** Signals
 +
** Resource limits
 +
* Memory layout: security issues: buffer overflows, ASLR
 +
* Libraries
 +
* The boot process: boot loaders, the kernel, init, runlevels, init scripts
 +
* Disks: Block devices, partitioning, making file-systems, mounting/unmounting them, checking them, configuring fstab
 +
* Swap and virtual memory
 +
* RAID: levels, MD devices and mdadm
 +
* Basic MySQL administration: DB and user administration and backing up/archiving databases
 +
* Common Administrative tasks:
 +
** User/group administration
 +
** Log files, accounting files and reporting
 +
** Quotas
 +
* Networking:
 +
** SSH and related tools for key generation and management, scp, rsync
 +
** Various networking terms / OSI model
 +
** SSL/TLS certificates (openssl), creating signed certificates, setting up a CA purpose of certs, anatomy of a cert
 +
** IPv4 networking: Packets, Ethernet, ARP, DNS, CIDR, basic routing
 +
** The Linux Firewall (iptables) (time permitting)
 +
 
 +
CS 479 Web Programming II
 +
* Review of CS170 concepts:
 +
** Basic HTML: basic formatting, lists, tables
 +
** Extensive HTML forms review
 +
** Basic CSS: selectors, box model, colors, fonts
 +
** JavaScript/ECMAScript review: basic data-types, variables and scope, functions, conditionals, loops.
 +
** The DOM, document and window objects, events and the event object
 +
* PHP Scripting:
 +
** Output
 +
** Data-types and scoping
 +
** Super-Globals: $_GET, $_POST, etc.
 +
** Language features: functions, conditionals, loops: while, for, foreach
 +
* MySQL/MariaDB:
 +
** Databases and tables
 +
** Data-types
 +
** SQL syntax: creating table, insert, update, delete and select
 +
** The PHP Mysqli interface (switch to PDO?)
 +
** simple vs. prepared statements
 +
** Security, escaping strings, input validation, etc
 +
* AJAX: Asynchronous client/server pages via XMLHttpRequest and JSON encoded data.
 +
* HTTP authentication schemes including HTTP auth, PHP sessions, creating long lived sessions using sessions cookies coupled with a user and sessions tables, password hashing, SSL/TLS security
 +
* WebSockets (time permitting)
  
 
===DS Concentration===
 
===DS Concentration===
* Geoff fills this in...
+
CS 202 - see CS concentration
* Math 131, 132, 231 Calc I, II, III
+
 
* Math 313 Elem Lin Alg
+
CS 457 - see IS concentration
* 202 CS II
+
 
* 401 Prog for DS (4)
+
CS 475 AI
* 457 DB - see under IS
+
 
* 475 AI -
+
CS 401 Programming for Data Science and Anal I
* 476 Machine Learning -
+
 
 +
Linear Algebra
 +
 
 +
Calc III
 +
 
 +
=CS MS Major=
 +
 
 +
==Required for all Majors==
 +
Culminating experience - one of the following -
 +
* CS 699 - Computer Science Internship (0-3)
 +
* CS 685 - Software Project (3-6)
 +
* CS 695 - Computer Science Research (3-6)
 +
* BIO 692 - Research in Biology (1-10) (bioinformatics concentration only)
 +
* BIO 699 - Master’s Thesis (6) (bioinformatics concentration only)
 +
Pass Comprehensive Exam
  
= Graduate Degree - CS MS =
+
Note - an incomplete will be given for culminating experience if insufficient work to be complete, normally given 1 additional term to complete.
Current requirements are at - [https://catalog.indstate.edu/preview_program.php?catoid=37&poid=5589&returnto=1117]
 
  
== MS Overview ==
+
==Academic Concentration==
4 semester plan
+
* CS 658 Algorithms II (5)
{| class="wikitable"
+
* CS 671 Systems II (5)
|-
+
* CS 558 Algorithms and Theory of Computation (5) - required if 458 not taken as undergrad
! Term !! Pro !! Academic !! Bioinf !! DS
+
* CS 556 Systems Programming (4) - required if 456 not taken as undergrad
|-
 
| Fall 1  || 500, 501, 600 || 500, 558, --- || 500 or 501, 600, BIO 581 || 501, Math 503, 6xy
 
|-
 
| Spring 1 || 609, ---, --- || 556, 658, --- || 618, BIO 587, ---        || 601, Math 540, 575
 
|-
 
| Fall 2  || 617, ---, --- || 671, ---, --- || 617 or 557, BIO 680, --- || 617, 557, 6xy
 
|-
 
| Spring 2 || 685, ---      || 695, ---      || 685 or 695 or BIO, ---  || 695, 6xy
 
|}
 
  
Names of courses, and ones to be > 3 hours
+
Note - courses that are currently part of the concentration that would no longer be - CS 620 Theory of Computation II, CS 621 Discrete Structures II, CS 670 Concurrent Programming, CS 673 Networking II
{| class="wikitable"
 
|-
 
! Pro !! Academic !! Bioinf !! DS
 
|-
 
|
 
500 Programming Fundamentals <br>
 
600 Concrete Math <br>
 
Electives - leave it as is-ish<br>
 
||
 
  
558 Algorithms (5) <br>
+
==Professional Concentration==
556 Systems (4) <br>
+
* Retain current requirements - CS 500, CS 600, 1 course from 602-609, 1 course from 610-618, 1 additional course 602-618
658 Algorithms II (5) <br>
+
* CS 501 Programming for Data Science & Analytics I - now required
671 OS II (5) <br>
 
695 CS Research<br>
 
  
||
+
==Bioinformatics Concentration==
BIO 581 Genome Science <br>
+
* Retain everything from current requirements
BIO 587 Bioinformatics <br>
+
* Allow CS 500 or CS 501 to count
BIO 680 Seminar: Genetics and Evolution <br>
 
618 Computational Bio <br>
 
||
 
501 Prog for DS and Anal I <br>
 
601 Prog for DS and Anal II <br>
 
575 AI, 557 DB<br>
 
Math 503 Lin Alg & Modeling for DS <br>
 
Math 540 Stats for DS<br>
 
|}
 
  
Other changes
+
==Data Science - New Concentration==
* Pass Comprehensive Exam
 
* Culminating experience - give incomplete when insufficient work done
 
  
== Data Science - New Concentration ==
+
===Admissions===
=== Admissions ===
 
 
To declare the data science concentration, students must demonstrate competency (through coursework/transcript or otherwise) in the following - basic programming and data structures, multivariate calculus, matrix algebra.  To be prepared for the DS MS, an undergraduate at ISU should complete the following - CS 151 Intro to Computer Science, CS 260 Object Oriented Programming, MATH 131/132/231 Calculus I/II/III, MATH 313 Elementary Linear Algebra.
 
To declare the data science concentration, students must demonstrate competency (through coursework/transcript or otherwise) in the following - basic programming and data structures, multivariate calculus, matrix algebra.  To be prepared for the DS MS, an undergraduate at ISU should complete the following - CS 151 Intro to Computer Science, CS 260 Object Oriented Programming, MATH 131/132/231 Calculus I/II/III, MATH 313 Elementary Linear Algebra.
  
=== Curriculum ===
+
===Curriculum===
 
* CS 501 Programming for Data Science & Analytics I (3)
 
* CS 501 Programming for Data Science & Analytics I (3)
 
* CS 557 Database Processing (3) (if 457 not taken as undergrad)
 
* CS 557 Database Processing (3) (if 457 not taken as undergrad)
Line 196: Line 388:
 
This is 7 required courses.  Adding the 3 credit culminating experience then gives 8 courses, and 3 courses of 600-level electives (need all 3 to be 600 level so the total is 18 credits of 600 level).
 
This is 7 required courses.  Adding the 3 credit culminating experience then gives 8 courses, and 3 courses of 600-level electives (need all 3 to be 600 level so the total is 18 credits of 600 level).
  
== Accelerated MS Program ==
+
==Accelerated 4+1 BS+MS==
 
An accelerated MS program is a chance for an ISU undergrad to finish the BS and MS in 4+1 years.  The university-wide policies are - [https://catalog.indstate.edu/content.php?catoid=37&navoid=1109#accelerated_programs policies].  An example program is - [https://indstate.curriculog.com/proposal:2745/form accelerated Math MS]
 
An accelerated MS program is a chance for an ISU undergrad to finish the BS and MS in 4+1 years.  The university-wide policies are - [https://catalog.indstate.edu/content.php?catoid=37&navoid=1109#accelerated_programs policies].  An example program is - [https://indstate.curriculog.com/proposal:2745/form accelerated Math MS]
 
* Students must have 3.0 GPA and have completed 80% of their required credits by the start of their 4th year.
 
* Students must have 3.0 GPA and have completed 80% of their required credits by the start of their 4th year.
 
* Students must finish their BS with 3.0 GPA.
 
* Students must finish their BS with 3.0 GPA.
 
* Can take up to 9 credits of 500 level courses and 6 credits of 600 level courses in final year of BS.  Up to 9 credits of 500 level can count for both BS and MS.  Note that 600 level courses don't count towards being full time for financial aid.
 
* Can take up to 9 credits of 500 level courses and 6 credits of 600 level courses in final year of BS.  Up to 9 credits of 500 level can count for both BS and MS.  Note that 600 level courses don't count towards being full time for financial aid.
 +
 +
==Graduate Certificate==
 +
Should we?
  
 
= Teaching Schedule =
 
= Teaching Schedule =
 +
 +
Note - this section is out of date and needs to be updated.
 +
 
When these changes are in effect (2020-2021), the CS teaching schedule could be ...
 
When these changes are in effect (2020-2021), the CS teaching schedule could be ...
 
* Fall and Spring (52) - 101, 151, 151, 151, 170, 201 (4), 202 (4), 203 (4), 256, 256, 260, 351 (5), 499 (2), 500, 401/501, 685/695/699
 
* Fall and Spring (52) - 101, 151, 151, 151, 170, 201 (4), 202 (4), 203 (4), 256, 256, 260, 351 (5), 499 (2), 500, 401/501, 685/695/699

Revision as of 15:17, 22 July 2019

This page lists proposed changes for the CS programs. A few guiding principals...

  • BS - widen the split between the computing science and information science concentrations - making the IS concentration more doable/attractive to more students, firming up the foundations in the CS concentration, adding a data mining concentration.
  • MS - new data science concentration, streamline academic concentration
  • BS and MS - shift some key courses to be 4-5 hour courses, ensuring a stronger foundation for more students.


CS Undergraduate Majors/Minor

Overview

Note that the current major includes 10 courses required of all majors, 5 additional courses required for information science, 3 CS courses required of computing science, and 2 math courses required for computing science.

current minor, current certificate

Names of courses. Bold part of CS minor and CS certificate. # credits in ().

All (26) CS (27) IS (24) DS (28)

Stats - Math 241 or 341 (3)
151 Intro to CS (3)
201 Programming Structures (4)
303 Discrete Structures / Intro Theory (4)
351 Intro Systems (5)
470 PL (3)
499 Senior Design (4)
Culminating Exam

Math 131, 132 Calc I, II (8)
202 Data Structures and Algorithms (4)
458 Algorithms (5)
456 Systems (4)
471 Op Sys (3)
473 Networking (3)

101 Fundamentals of Computing (3)
CSS 210 Intro to Networking (3)
CSS 211 Intro to Security (3)
CSS 331 Files and DB (3)
170 Web Prog I (3)
457 DB (3)
469 Unix/Linux Adm/Net (3)
479 Web Prog II (3)

Math 131, 132, 231 Calc I, II, III (12)
Math 313 Elem Lin Alg (3)
202 CS II (4)
401 Prog for DS (3)
457 DB (3)
475 AI (3)

Note - courses that are currently part of the major that no longer would be - CS 420 Theory of Computation, CS 421 Formal Methods, CS 451 (changes to become CS 351).

Note - courses that we haven't offered in a while - CS 440 Graphics Programming, CS 463 Compilers - what should we do with them?

Note - current major is 51-53 credit hours, including 3 credits of 300 level and 25-28 credits of 400 level. Proposal would be for 50-54 credit hours, including 9-12 credits of 300 level and 16-22 credits of 400 level. Students need 45 300-400 level credits overall to graduate. Students will normally have at least about 12 credits of 300-400 level courses as part of Foundational Studies.

Note - current proposal for CS Ed minor is - CS 101, CS 151, CS 260, CS 305 Computer Science Teaching Methods, ECT 173 - Fundamentals of Information Technology.

Question - also add - programming for the sciences, with CS 151 as a prereq? Check with NSM chairpersons.

Question - DS concentration called Data Mining?

Question - Data Mining?

Question - electives?

Prereqs

  • 101 or 151 -> CSS 210, CSS 211, CSS 311
  • 151 -> 201, 203, 251, 170
  • 201 -> 202, 470, 499, 457
  • 202 -> 458, 456, 471, 473, 475
  • 456 -> 471, 473 ??
  • 351 -> 456, 469, 479
  • 303 -> 457, 458
  • 170 -> 479
  • Math 313 -> 401, 475
  • Math 231 ->

6 Semester Plan

Term All/Minor CS IS DS
Fall 1 151 101 151, Math 131
Spring 1 201, Math 131 151, CSS 210 201, Math 132
Fall 2 stats, 251 202, Math 132, 203 170, CSS 211 202, Math 231
Spring 2 456 201, 203, CSS 331 Math 313, 401
Fall 3 499 458, 471 457, 479 457, 475
Spring 3 470, 499 473 469

Course outlines and notes

Courses required for all concentrations

CS 151 Intro to CS

  • First course for CS track, second course for IS track.
  • Note - for the first 3 weeks, they have things to do as well that don't require unix
  • Ability to use Unix at the command line
  • Basic understanding of files and directories
  • Can take a specification and produce code implementing it
  • Python3 programming and debugging
  • Understanding of primitive data types and basic Boolean logic
  • Basic programming concepts such as scope, functions, conditionals and loops, objects and classes, file I/O
  • Most important math needed - bases, modular arithmetic, bit operations
  • Simple algorithms for searching and sorting and simple mathematical concepts as they relate to programming such as numeric bases, summation and modulus arithmetic.
  • Send some stuff to CS 201 instead

CS 201 Programming Structures

  • Viewed as a 2-course sequence with CS 151, after CS 201 one should be a decent python programmer and have dabbled in key CS topics
  • Language is currently python3
  • Modular programming, including object-oriented, separating into modules
  • Data formats and number systems (binary, decimal, octal, hex), signed/unsigned, two’s complement, floating point, long, int, short char, strings
  • Python3 - (nearly) all keywords and operations, scripting and command-line arguments
  • Python3 - all builtin functions, use of commonly used libraries (string, re, math, os.path, csv, json, tkinter)
  • I/O with different data formats and number systems
  • Python3 data structures (lists, tuples, dictionaries) - competent use, can do operations on paper, can do calculations of runtime for each.

CS 303 Discrete Structures / Intro Theory

  • Logic - De Morgan's law, boolean operations, truth tables, inclusion-exclusion principle
  • base systems
  • algebra / logarithmic / exponential growth
  • Big O, formal and informal definitions of important complexity class (L, P, NP, PSPACE, EXP)
  • Concept of a general-purpose computer (maybe TM, maybe VN), Church-Turing thesis
  • Proofs - line/geometry/propositional logic, contradiction, induction (weak and strong)
  • pattern matching (maybe don't call it DFA's/NFA's/RE's)
  • grammars - look at grammar for some programming language (e.g., subset of C) as an example, basic terms and concepts
  • Counting - permutations, combinations, binomial theorem, pigeonhole principle
  • Discrete probability - definitions, basic theorems/formula, conditional probability, independence, expectation, linearity of expectation
  • "Big ideas" - Monty Hall, 100 prisoners problem, probabilistic method
  • Number theory - modular arithmetic (division, exponentiation, Euclid's algorithm, inverses), sieve of Eratosthenes, primes, RSA as a big goal
  • Graph theory - basic terminology, basic properties, matchings, Hall's marriage theorem, some algorithm or few

CS 351 Intro to Systems

  • C
  • Assembly language - small subset of something real, or something artificial. Should include key concepts, doing coding in whatever language is chosen.
  • Circuit fundamentals - logic gates, decoders, encoders, multiplexors, ROMs, universal gates, adders, flip-flops, latches, Karnaugh Maps, counters, bit pattern detectors, incrementers, multipliers, etc.
  • Architecture - CPU design/organization, instruction set, RTL, registers, microcode, pipelining.
  • Architecture - memory design/organization including cache, virtual memory, segmentation, paging.
  • Architecture - I/O units, buses, interrupts.
  • Architecture - parallel / multi-core considerations.
  • Linux - more in depth use of the shell, etc.
  • Linux - system calls, including using them to make programs

CS 470 Programming Languages

  • Design choices in programming languages - terms, pros/cons, examples, history of programming languages
  • Functional programming, including reasonable sized programming assignments
  • Object-oriented programming - review, including laundry list of terms and such
  • Concurrent programming - in particular how programming language design plays a role
  • What else? Logic programming?
  • Do some interesting programs in the top-10 tiobe languages (currently - java, C, python, C++, C#, visual basic .net, javascript, php, sql, objective-c)?

CS 499 Senior Design

  • prereq - senior standing, CS 201, 203, 251
  • 2 credits/term, taken for two terms
  • First term - reasonable sized project involving whatever is hot at the moment. Currently - using a cloud-based system to do a website, app, DB, and have them work together.
  • Second term - job search and interview prep - job search, resume, cover letter, interview questions, portfolio, personal website, git, presentation skills

CS Concentration

CS 202 Data Structures and Alg

  • C programming - nearly all keywords, operations. All C data types (and use to review binary, decimal, octal, hex, two's complement, floating point, add in long, int, short char, C strings). I/O with different data formats and number systems.
  • Memory organization - text, data, heap, stack, malloc, free, pointer arithmetic
  • Unix and debugging - gdb, grep, sed, awk, find, compiler options, makefiles, unix regular expressions, reading manual and manual organization, pipes, I/O redirection
  • Basic data structures - start with Python3 data structures and do them in C (and compare run times).
  • Other basic data structures - linked list, stack, queue, heap, sorted array, unsorted array, binary search tree - do code for all either in class or as assignments (an A student should have done code for all of these).
  • More data structures - some collection of "other" data structures - balanced binary tree, B tree, skip list, trie, etc.
  • Other basic data structures - unsorted versus sorted array, heap, stack, queue, binary search tree. Can do all on paper, do code for some in class and as assignments.
  • Search and sorting - linear and binary search, selection and insertion sort, mergesort, heapsort, quicksort - code for all in class and as assignments
  • Asymptotic analysis and running time - big O/Omega/Theta, little o/omega, definitions, basic proofs, polynomials / exponentials / logarithms, recursion trees
  • Graphs - terminology, adjacency matrix, adjacency list, basic algorithms (BFS, DFS, shortest path, minimum spanning tree) - do all algorithms on the board, code for some in class, running time for all
  • Classes and objects in C++ - data abstraction and encapsulation, defining classes, creating objects, inheritance, protection, virtual functions and polymorphism
  • The Standard Template Library
  • Comparison of C++ and other OO Languages (Java, Python, etc.)

CS 456 Systems

  • Version control: Make, RCS, Git
  • File system I/O - open/close/read/write, printf/scanf, opendir/closedir/readdir/stat
  • Disk organization - inodes, superblocks, etc.
  • Local interprocess communication: signals, socketpairs, shared memory.
  • Fork and execve: how shells work.
  • Regular expressions (review!)
  • Condensed introduction to x64 assembly language.
  • How assemblers work.
  • Structure of ELF files -- use of tools like objdump, readelf, nm, od.
  • Lex/flex and yacc/bison examples starting with a simple calculator and then a simple programming language (something on the level of Dartmouth BASIC).

CS 458 Algorithms and Theory of Computation

  • Some things that are listed under CS 202
  • String matching algorithms
  • Graph algorithms - BFS, DFS, connected components, shortest path, MST. Others?
  • Linear programming
  • Dynamic programming
  • Sorting algorithms - quadratic time, merge sort, quick sort, heap sort. Others?
  • NP-complete / optimization problems - definitions and reductions, a few example problems
  • NP-complete / optimization problems - approximation algorithms, hardness of approximation
  • NP-complete / optimization problems - brute force / backtracking / CSP
  • Models of computation - DFA, NFA, CFG, PDA, TM, NTM - definitions and basic properties, normal forms, equivalences, pumping lemmas.
  • Complexity classes - definitions, basic properties, example problems, undecidability, diagonalization, reductions.

CS 471 Operating Systems

  • Review - functions every citizen should know, basic data structures in C
  • Device Management, typically focusing on storage devices and filesystems
  • ext2 file system in detail
  • Other filesystems at a high level
  • Process/Thread Management
  • Single CPU execution - time slicing, scheduling
  • Multi-core execution
  • Shared data - semaphores, other mechanisms, synchronization issues, race conditions
  • Memory Management
  • Memory organization, virtual memory, pages, page faults, CPU cache
  • Other Topics, as time allows

CS 473 Networking

  • History and Operation of Packet Networks and Switched Networks
  • Layered Protocols: TCP/IP and (maybe) OSI.
  • Socket programming - TCP/UDP - in C.
  • Example higher level protocols examined in some detail (e.g., SMTP or HTTP).
  • Encryption and the four horsemen of the apocalypse: symmetric block ciphers, cryptographic hashing functions, public key cryptosystems, and cryptographic random number generation. Discussion of SHA, AES, RSA, TLS.

IS Concentration

CS 101 Fundamentals of Computing

  • Somewhat closely parallel AP CS Principles (it happens to work out to what we'd want to do)
  • basic understanding of how computers work
  • basics of programming
  • how information is stored and transferred between computers
  • do’s and don’ts of security
  • basic understanding of concepts of computational complexity and artificial intelligence

CS 170 Web Programming I

  • Client-server relationship and front-end back-end architecture
  • Editors, multi-file projects, code linters, and workflow
  • The JavaScript event loop and asynchrony
  • The JavaScript prototype and the `this` keyword
  • EcmaScript latest additions
  • Regular expressions
  • Intro to PHP: Hypertext Preprocessor
  • Separation of concerns and ideal abstraction
  • Build tools and test suites
  • Simple back-end in NodeJS

CSS 210 Intro Security

CSS 211 Intro Networking

CSS 311 Files and DB


CS 457 Databases

  • Database Models
  • Relational Algebra
  • SQL - A reasonably comprehensive introduction to SQL. SQLite is a very good, easy to use, vehicle for this part of the course.
  • Database design: logical design, physical design, security design.
  • Database design: ER diagrams, normal forms, functional dependencies, transitive closure, etc.
  • Transactions: query processing, ACID, logging, indexing, hashing, B+ trees, joins.
  • SQL - More advanced features (PL/SQL functions, triggers, etc.)
  • NOSQL: discuss a subset of the following (whatever’s hot)
  • XML
  • Mongodb
  • Redis
  • levelDB
  • DataFrames - Python/pandas
  • Cassandra
  • many more possibilities

CS 469 Unix/Linux Administration and Networking

  • Wild-cards and regular expressions
  • Files and directories:
    • The file-system tree, path traversal, links
    • Unix permissions and ACLs
    • The FHS standard: where things go in the file-system
  • Bash scripting
    • Invocation and startup, job control
    • Command lists, pipelines, redirection
    • Positional parameters and special variables, data types, the environment
    • Functions, variable scope
    • Conditionals and loops
    • Bash built-ins: read, printf, alias, etc
  • The core-utilities: sed, col, grep, tr, basename, dirname, etc.
  • Processes and threads:
    • Attributes of processes: understanding ps,top, etc output
    • /proc filesystem
    • Signals
    • Resource limits
  • Memory layout: security issues: buffer overflows, ASLR
  • Libraries
  • The boot process: boot loaders, the kernel, init, runlevels, init scripts
  • Disks: Block devices, partitioning, making file-systems, mounting/unmounting them, checking them, configuring fstab
  • Swap and virtual memory
  • RAID: levels, MD devices and mdadm
  • Basic MySQL administration: DB and user administration and backing up/archiving databases
  • Common Administrative tasks:
    • User/group administration
    • Log files, accounting files and reporting
    • Quotas
  • Networking:
    • SSH and related tools for key generation and management, scp, rsync
    • Various networking terms / OSI model
    • SSL/TLS certificates (openssl), creating signed certificates, setting up a CA purpose of certs, anatomy of a cert
    • IPv4 networking: Packets, Ethernet, ARP, DNS, CIDR, basic routing
    • The Linux Firewall (iptables) (time permitting)

CS 479 Web Programming II

  • Review of CS170 concepts:
    • Basic HTML: basic formatting, lists, tables
    • Extensive HTML forms review
    • Basic CSS: selectors, box model, colors, fonts
    • JavaScript/ECMAScript review: basic data-types, variables and scope, functions, conditionals, loops.
    • The DOM, document and window objects, events and the event object
  • PHP Scripting:
    • Output
    • Data-types and scoping
    • Super-Globals: $_GET, $_POST, etc.
    • Language features: functions, conditionals, loops: while, for, foreach
  • MySQL/MariaDB:
    • Databases and tables
    • Data-types
    • SQL syntax: creating table, insert, update, delete and select
    • The PHP Mysqli interface (switch to PDO?)
    • simple vs. prepared statements
    • Security, escaping strings, input validation, etc
  • AJAX: Asynchronous client/server pages via XMLHttpRequest and JSON encoded data.
  • HTTP authentication schemes including HTTP auth, PHP sessions, creating long lived sessions using sessions cookies coupled with a user and sessions tables, password hashing, SSL/TLS security
  • WebSockets (time permitting)

DS Concentration

CS 202 - see CS concentration

CS 457 - see IS concentration

CS 475 AI

CS 401 Programming for Data Science and Anal I

Linear Algebra

Calc III

CS MS Major

Required for all Majors

Culminating experience - one of the following -

  • CS 699 - Computer Science Internship (0-3)
  • CS 685 - Software Project (3-6)
  • CS 695 - Computer Science Research (3-6)
  • BIO 692 - Research in Biology (1-10) (bioinformatics concentration only)
  • BIO 699 - Master’s Thesis (6) (bioinformatics concentration only)

Pass Comprehensive Exam

Note - an incomplete will be given for culminating experience if insufficient work to be complete, normally given 1 additional term to complete.

Academic Concentration

  • CS 658 Algorithms II (5)
  • CS 671 Systems II (5)
  • CS 558 Algorithms and Theory of Computation (5) - required if 458 not taken as undergrad
  • CS 556 Systems Programming (4) - required if 456 not taken as undergrad

Note - courses that are currently part of the concentration that would no longer be - CS 620 Theory of Computation II, CS 621 Discrete Structures II, CS 670 Concurrent Programming, CS 673 Networking II

Professional Concentration

  • Retain current requirements - CS 500, CS 600, 1 course from 602-609, 1 course from 610-618, 1 additional course 602-618
  • CS 501 Programming for Data Science & Analytics I - now required

Bioinformatics Concentration

  • Retain everything from current requirements
  • Allow CS 500 or CS 501 to count

Data Science - New Concentration

Admissions

To declare the data science concentration, students must demonstrate competency (through coursework/transcript or otherwise) in the following - basic programming and data structures, multivariate calculus, matrix algebra. To be prepared for the DS MS, an undergraduate at ISU should complete the following - CS 151 Intro to Computer Science, CS 260 Object Oriented Programming, MATH 131/132/231 Calculus I/II/III, MATH 313 Elementary Linear Algebra.

Curriculum

  • CS 501 Programming for Data Science & Analytics I (3)
  • CS 557 Database Processing (3) (if 457 not taken as undergrad)
  • CS 575 Artificial Intelligence (3) (if 475 not taken as undergrad)
  • CS 601 Programming for Data Science & Analytics II (3)
  • CS 617 Databases, Data Mining, and Big Data (3)
  • MATH 503 Linear Algebra and Modeling for Data Science and Analytics (3)
  • MATH 540 Statistics for Data Science & Analytics (3)

This is 7 required courses. Adding the 3 credit culminating experience then gives 8 courses, and 3 courses of 600-level electives (need all 3 to be 600 level so the total is 18 credits of 600 level).

Accelerated 4+1 BS+MS

An accelerated MS program is a chance for an ISU undergrad to finish the BS and MS in 4+1 years. The university-wide policies are - policies. An example program is - accelerated Math MS

  • Students must have 3.0 GPA and have completed 80% of their required credits by the start of their 4th year.
  • Students must finish their BS with 3.0 GPA.
  • Can take up to 9 credits of 500 level courses and 6 credits of 600 level courses in final year of BS. Up to 9 credits of 500 level can count for both BS and MS. Note that 600 level courses don't count towards being full time for financial aid.

Graduate Certificate

Should we?

Teaching Schedule

Note - this section is out of date and needs to be updated.

When these changes are in effect (2020-2021), the CS teaching schedule could be ...

  • Fall and Spring (52) - 101, 151, 151, 151, 170, 201 (4), 202 (4), 203 (4), 256, 256, 260, 351 (5), 499 (2), 500, 401/501, 685/695/699
  • Fall (30) - 479, CSS 210, CSS 331, 458 (4), 457, 470, 671 (5), 600, 603/611, 617
  • Spring (30) - 469, CSS 211, 456 (4), 475, 658 (5), 601, 602/610, 618/619, 609
  • Total - 52*2+30+30 - 164 credit hours,

And taught by ...

  • Abhyankar - fall CSS 210, 603/611, 470, 256 | spring 256, 256, CSS 211, 602/610
  • Baker - fall 457, 479, 351(5) | spring 351(5), 456(4), 469
  • Exoo - fall 617, 401/501, 671(5) | spring 475, 601, 401/501
  • Kinne - fall 151, GH 101 | spring 151, BD4ISU
  • Rafiey - fall 458(4), 600, 256 | spring 658(5), 618/619
  • Sternfeld - fall 500, 499(2), 170, 203(4) | spring 203(4), 500, 609, 499(2)
  • New CS Faculty Member - fall 202(4), 685, CSS 331 | spring 202(4), 685, 170
  • Boulware - fall 260 | spring 260
  • May - fall 101, 201(4) | spring 101, 201(4)
  • GAs - fall 151, 151, 260 | spring 151, 151, 260
  • not offered with current staffing - [420], [473], [452], [421], [471]

Note - this assumes that Math is able to offer MATH 403/503, 440/540