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

From Computer Science
Jump to: navigation, search
(Overview)
(Graduate - Revised Programs)
 
(261 intermediate revisions by 2 users not shown)
Line 1: Line 1:
This page lists proposed changes for the CS programs.  A few guiding principals...
+
This page lists proposed changes for the CS BS and MS programs that are being put forward during the 2019-2020 academic year, with a goal to be in effect for the fall 2020 termThe point of contact for these changes is Jeff Kinne ([mailto:jkinne@indstate.edu jkinne@indstate.edu]). Changes have been worked on by the CS regular faculty since the 2017-2018 academic year and result from program review, assessment results, and changes in the field (CS majors tend to go through moderate updates at least once every ten years). All changes were approved by unanimous votes at the department level (vote of all CS regular faculty).   
* 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.
 
* 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.   
 
  
 +
'' '''Status''' as of January 20, 2020 - all changes are on track to be approved to start Fall 2020.''
  
=CS Curriculum Updates 2019-2020 - Summary=
+
=Attachments and Curriculog=
==BS and MS Programs==
+
Links to attachments that are included in curriculog for the updates to the BS and MS.
* Existing concentrations revised
+
* Degree maps / plans - [https://docs.google.com/spreadsheets/d/1hiH4IQPrWdm9Q5UCwnQ7XrVBvJeSFhJIZQywf3iSHsw/edit?usp=sharing BS and MS]
* New concentrations in Data Science in BS and MS
+
* '''Curriculum Maps''' - [https://drive.google.com/file/d/1JDP0qQgy3NvHUkIxyvIHyGQxtBr3nCFY/view?usp=sharing BS], [https://drive.google.com/file/d/1BTHzzgGvmuLCfeZoNGTfBJvW4cQyakeG/view?usp=sharing MS]
* New accelerated BS+MS program
+
* '''Outcomes Library''' - [https://drive.google.com/file/d/1TEjADrCrJTOA-A-mNQkq57d7LlDURxWn/view?usp=sharing BS], [https://drive.google.com/file/d/1Ea0_0PQV70m3wafauUc7DFtbU0a8vShp/view?usp=sharing MS]
 +
* '''Assessment Plans''' - [https://docs.google.com/document/d/1cZwdGgMcQoSQwc5WFxc2MBjKcXAJxzFDWchuairRz18/edit?usp=sharing BS], [https://docs.google.com/document/d/1UM0jqy3GrDzOua6cCi2njdoydtL8ATsL0Nu2hdVJmog/edit?usp=sharing MS]
 +
* '''Meeting Minutes''' - [https://drive.google.com/file/d/1meTswp2Hufq3Wr08jRpQn3PASkseP20g/view?usp=sharing CS faculty meeting minutes]
 +
* '''Support from Impacted Units''' - email indicating support attached in curriculog, from - School of Criminology and Security Studies, AFIRM Department
 +
* Projected Teaching schedule - [https://docs.google.com/spreadsheets/d/12KIvvL8ldPgluDFiWHNDefdI8xlZDQNvKwSodLwQxPw/edit?usp=sharing google doc]
 +
* Links to curriculog for the proposals - Go to [https://indstate.curriculog.com], click "All Proposals" near the top left, click "Advanced Filter" near the top, for "Found Under" select "Mathematics and Computer Science", click "Filter Proposals" button.  This will show all proposals from Math & CS.
  
==Minors and Certificates==
+
Note - CIP code for Computer Science is 11.0701The major codes are 3060 for the CS MS and 3023 for the CS BS and minor.
* New undergraduate minor in Computer Science Teaching - CS 101, CS 151, CS 260, CS 305, ECT 173[https://docs.google.com/document/d/1NpqaYx2etAUY1th7ymKds7l3vYWxE_Ar2Yk-ALGMiNk/edit?usp=sharing Mapping from courses to IN licensing exam]
 
* Revision of undergraduate CS minor and Certificate in Applied Computer Science
 
* New (Graduate) Certificates??  Unix/Linux Administration, Web Programming, Database Administration, Algorithms, Data Science, Informatics, Software Development, Systems Development ??
 
  
==New Courses==
+
=Undergraduate - Updates Summary=
* CS 305 Computer Science Teaching Methods (part of CS Teaching minor) [https://docs.google.com/document/d/18Vm70rHXxAXqYsLNOFlJ120mlAwHy5WinUw8fjp44Pw/edit model syllabus]
+
==Concentrations==
* CS 401 Programming for Data Science - undergraduate analog of existing CS 501
+
* ''Information Science Concentration'' - revised to be a bit "more applied" - removed some senior-level systems courses and added some lower level courses that will be shared with the Cybercriminology and Security Studies major.
==Revised Courses==
+
* ''Computing Science Concentration'' - will be able to focus a bit more on systems/theory as a result of changes to Information Science Concentration (senior-level systems/theory courses can go a bit deeper by only serving the Computing Science Concentration now).
* '''Name change''' CS 201 Programming Structures (was Computer Science I), CS 202 Data Structures and Algorithms (was Computer Science II), CS 303 Discrete Structures and Computing Theory (was Discrete Structures), CS 351 Introduction to Computer Systems (was CS 451 Computer Architecture), CS 499 Senior Design (was Senior Seminar), CS 501 Programming for Data Science I (was Programming for Data Science & Analytics I), CS 601 Programming for Data Science II (was Programming for Data Science and Analytics II)
+
* ''Data Science Concentration'' - new concentration added.
* '''# of credit hours''' CS 303 4 hours (was 3), CS 351 5 hours (was 3), CS 456 4 hours (was 3), CS 458 5 hours (was 3), CS 499 4 hours (was 1)
+
* ''Core'' - sequencing of the BS core shared by all concentrations has been tweaked.
* '''Catalog description''' updated for all of those courses as well
 
* '''Required courses''' no longer required for the BS (to make room for increase # hours in key courses above) - CS 420 Theory of Computation, CS 421 Formal Methods, CS 452 Software Engineering
 
  
==BS Program==
+
==Minors==
 +
* ''Computer Science Teaching minor'' - new minor that could be an add-on minor to an education minor to prepare to become licensed in computer education.  The minor consists of the new course CS 305 (see below) and existing courses CS 101 Fundamentals of Computing, CS 151 Intro to Computer Science, CS 260 Object Oriented Programming, and ECT 173 Fundamentals of Information Technology.  ([https://docs.google.com/document/d/1NpqaYx2etAUY1th7ymKds7l3vYWxE_Ar2Yk-ALGMiNk/edit?usp=sharing Mapping from courses to IN licensing exam])
 +
* ''CS Minor'' - updated based on updates to CS core courses.
  
=CS Undergraduate Majors/Minor=
+
==Courses==
==Other New Courses?==
+
* '''Name change''' CS 201 Programming Structures (was Computer Science I), CS 202 Data Structures and Algorithms (was Computer Science II), CS 303 Discrete Structures and Computing Theory (was Discrete Structures), CS 351 Computer Organization (was CS 451 Computer Architecture), CS 457 Database Systems (was Data Base Processing), CS 499 Senior Design (was Senior Seminar)
CS XYZ - Programming for the Sciences - check with NSM chairpersons on what they would want (something with CS 151 as a prereq, or what, is there something they would recommend their majors take?).
+
* '''# of credit hours''' CS 303 4 hours (was 3), CS 351 4 hours (was 3), CS 499 4 hours by taking it twice for 2 credits each (was 1)
 +
* '''Catalog description''' updated for many of the courses, as noted in a section below, also put in catalog description to describe the major and concentrations
 +
* '''Prerequisites''' CS 351 prereq is 201 (previously 202 and 303), CS 452 (no longer require senior standing - this course is no longer the culminating experience for the major)
 +
* '''Prerequisites''' Add CS 351 as a prereq to - CS 456.  Add CS 303 as a prereq to - CS 456, CS 475.  Add Math 132 as a prerequisite for - CS 458/558.  Add CS 456 as a prereq to - CS 471, CS 473.
 +
* '''Prerequisites''' Replace CS 202 as a prereq with CS 201 for the following courses - CS 452, CS 457, CS 470, CS 499.
 +
* '''Required courses''' No longer required for the BS (to make room for increase # hours in key courses above) - CS 420 Theory of Computation, CS 421 Formal Methods, CS 452 Software Engineering.  These will be ''taught out'' over the next few years to fill the needs of existing students and will be offered as electives thereafter (on a rotating basis).
 +
* '''Banking''' bank the following courses that the department is currently unable to offer given current staffing - CS 220 Java Programming, CS 463 Compilers
  
==Overview==
+
The following '''new courses''' are being proposed.
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).
+
* '''CS 305 Computer Science Teaching Methods''' (part of CS Teaching minor) [https://drive.google.com/file/d/1G34-ULbjgdTeEBNsMJKSPyEv1kSRn9Hr/view?usp=sharing model syllabus]
 +
* '''CS 401 Programming for Data Science''' - undergraduate analog of existing CS 501, part of Data Science Concentration of BS.  [https://drive.google.com/file/d/1l6rFpq84PVbV-m59xIYRvwnglYMArdZH/view?usp=sharing model syllabus]
 +
* '''CS 417 Machine Learning''' - used in data science concentration.  Note that a graduate 500 level version is not being proposed (an existing course CS 617 already fills the need at the graduate level).  [https://drive.google.com/file/d/1d63bzOhbI0oW6ZGIBWAEScx41zcI6n0f/view?usp=sharing model syllabus]
 +
* '''CS 456L, 457L, 458L, 401L''' - 1 credit lab sections to go along with key senior-level courses in each concentration.  Note that graduate 500 level versions are not being proposed (the graduate students do not need the extra lab time).  Model syllabi - [https://drive.google.com/file/d/1mADOQQXFMPRhBgP-_LgbsjezSVLZfeMb/view?usp=sharing CS401L], [https://drive.google.com/file/d/1LYdhTT8JMrnaPxkM73QHfAy5Xsu3_L2R/view?usp=sharing CS 456L], [https://drive.google.com/file/d/1cMcG2GuNi2GGvF_k649Kv-zLaximPN9p/view?usp=sharing CS457L], [https://drive.google.com/file/d/1r_ObQ51YzOez3iAX3mZyJwv5ny1R0yt4/view?usp=sharing CS458L]
  
Note - courses that we haven't offered in a while - CS 440 Graphics Programming, CS 463 Compilers - what should we do with them?
+
=Graduate - Updates Summary=
 +
==Concentrations==
 +
* ''Computing Science Concentration'' - streamlined to focus on two key courses (CS 658 Algorithms II and CS 671 Operating Systems II) rather than allowing students to choose.
 +
* ''Data Science Concentration'' - new concentration added (note that most courses in the concentration are already being offered, and students will be able to switch to this concentration once it is official).
 +
* ''Professional and Bioinformatics Concentrations'' - modified to allow either CS 500 Programming Fundamentals or CS 501 Programming for Data Science as the foundational programming course, and allow CS 601 Programming for Data Science II to count as an Interconnected Computing core course in the Professional Concentration.
  
Note - current major is 51-53 credit hours, including 3 credits of 300 level and 25-28 credits of 400 level.
+
==Courses==
Proposal would be for 50-54 credit hours, including 9-12 credits of 300 level and 16-22 credits of 400 levelStudents need 45 300-400 level credits overall to graduateStudents will normally have at least about 12 credits of 300-400 level courses as part of Foundational Studies.
+
* '''Name change''' CS 501 Programming for Data Science (was Programming for Data Science & Analytics I), CS 601 Programming for Data Science II (was Programming for Data Science and Analytics II)
 +
* '''Catalog description''' updated for many of the courses, as noted in a section below, and added catalog description for the major and concentrations
 +
* '''Prerequisites''' Add CS 351 as a prereq to - CS 556. Add CS 303 as a prereq to - CS 556, 575Add Math 132 as a prerequisite for - CS 558Add CS 556 as a prereq to - CS 571, CS 573.
 +
* '''Prerequisites''' Replace CS 202 as a prereq with CS 201 for the following courses - CS 552, CS 557, CS 570.
 +
* '''Prerequisites''' For CS 617, add a prerequisite of CS 401 or CS 501 or CS 457 or CS 557.
 +
* '''Banking''' bank the following courses that the department is currently unable to offer given current staffing - CS 563 Compilers
  
Question - create a Data Mining certificate and/or minor?  Would there be demand for this?
+
==Accelerated 4+1==
 +
A new 4+1 accelerated BS+MS is being proposed, which would basically follow the rules imposed by university-wide guidelines and pair undergraduate concentrations with graduate concentrations (e.g., undergraduate Information Science naturally leads into the graduate Professional Concentration).
  
Question - electives?
+
''Note - still working on this proposal, may not be in effect for Fall 2020.''
  
==Prereqs==
+
=Undergraduate - Revised Programs=
* 101 or 151 -> CSS 210, CSS 211, CSS 311
+
==Undergraduate BS Major==
* 151 -> 201, 303, 251, 170
+
Below is a summary of the revised CS BS program - with courses required of all concentrations on the left, and the three concentrations listed in the remaining columns. Credit hours and prereqs in parenthesis.
* 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==
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Term !! All/Minor !! CS !! IS !! DS
+
! All (25) !! CS (26) !! IS (25) !! DS (26)
 
|-
 
|-
| Fall 1 ||            || 151               || 101              || 151, Math 131
+
|  
|-
+
Stats - Math 241 or 341 (3)<br>
| Spring 1 ||         || 201, Math 131     || 151, CSS 210      || 201, Math 132
+
151 Intro to CS (3)<br>
|-
+
201 Programming Structures (4 | 151)<br>
| Fall 2 || stats, 351 || 202, Math 132, 303 || 170, CSS 211      || 202, Math 231
+
303 Discrete Struct and Comput Theory (4 | 201)<br>
|-
+
351 Intro Systems (4 | 201)<br>
| Spring 2 ||         || 456                || 201, 303, CSS 331 || Math 313, 401
+
470 PL (3 | 201)<br>
|-
+
499 Senior Design (4 | 303, 351)<br>
| Fall 3 || 499        || 458, 471          || 457, 479          || 457, 475
+
||  
|-
+
Math 131, 132 Calc I, II (8)<br>
| Spring 3 || 470, 499 || 473                || 469              ||
+
202 Data Struct and Alg (4 | 201)<br>
 +
458 Algorithms (3 | 202, 303, Math 132), 458L (1)<br>
 +
456 Systems (3 | 202, 303, 351), 456L (1)<br>
 +
471 Op Sys (3 | 456)<br>
 +
473 Networking (3 | 456)<br>
 +
||
 +
101 Fundamentals of Computing (3)<br>
 +
CSS 210 Intro to Net (3 | 101 or 151)<br>
 +
CSS 211 Intro to Sec (3 | 101 or 151)<br>
 +
CSS 331 Files and DB (3 | 101 or 151)<br>
 +
170 Web Prog I (3 | 151)<br>
 +
457 DB (3 | 303, 201), 457L (1)<br>
 +
469 Unix/Linux Adm/Net (3 | 201)<br>
 +
479 Web Prog II (3 | 201, 170)<br>
 +
||
 +
Math 131, 132 Calc I, II (8)<br>
 +
202 Data Struct & Alg (4 | 201)<br>
 +
401 Prog for DS (3 | 202, 303, Math 132), 401L (1)<br>
 +
417 Machine Learning (3 | 401)<br>
 +
457 DB (3 | 303, 201), 457L (1)<br>
 +
475 AI (3 | 303, 202)<br>
 
|}
 
|}
  
==Course outlines and notes==
+
'''Culminating Exam''' - must be passed before graduating, students who have not passed it will be given an incomplete for their culminating experience until passed.  Sample exam and grading rubric is provided at the beginning of each term, exam is given at least twice per term (once during the first half of the term and once during the second half of the term).  '''Note''' - this exam will continue to be managed as part of CS 202 and 499.
  
===Courses required for all concentrations===
+
'''Changes''' The following are the main changes from the [https://catalog.indstate.edu/preview_program.php?catoid=39&poid=5720&returnto=1208 the current major]
CS 151 Intro to CS
+
* New concentration - Data Science.
* First course for CS track, second course for IS track.
+
* Newly required - statistics - MATH 241 or MATH 341
* Note - for the first 3 weeks, they have things to do as well that don't require unix
+
* CS 499 - now 4 credits (was 1), name changed (was "Senior Seminar"), will include major programming project
* Note - overall theme - make it fun, get them to spend as much time programming as possible (and enjoy it)
+
* Now only required for Computing Science Concentration - CS 202, 456, 471.
* Command-line:
+
* Now required for Computing Science Concentration instead of Information Science Concentration - CS 473.
** Manipulating files and directories: ls, cd, cp, mv, rm, mkdir, nano, cat, (stdin, stdout, stderr)
+
* Newly required for Information Science Concentration - CS 101, CSS 210, CSS 211, CSS 331.
** Few extra commands: date, find, grep, ps, kill
+
* CS 451 changed number to CS 351 and retitled (had been "Computer Architecture"), CS 201 and 202 names changed (had been "Computer Science I" and "Computer Science II").
** Changing shell to zshell
+
* 1 credit lab added to CS 456, 457, and 458. CS 303 made 4 credit hours, was 3.
** echo and environment variables $HOME $USER
+
* No longer required - CS 452 Software Engineering, CS 420 Theory of Computation, CS 421 Formal Methods
* Number Systems: binary, octal, decimal, hexadecimal, conversions, and ASCII/UTF-8 character encodings
 
* Basic Components of a Computer:  CPU, RAM, Hard Disk, Motherboard, etc.  Binary representation of data.
 
* Python3:
 
** Python 3 Interactive Mode, Syntax, Identifiers
 
** Statements and Expressions - expressions get evaluated to a single value
 
** Variables and Assignment
 
** print() - stdout, input() - stdin
 
** Basic Data Types and conversion: int, float, bool, str
 
** Data Operators and Expressions:
 
*** Numeric Operators:  Arithmetic and Comparison, round(), bit operations
 
*** String Operators: Concatenation, Comparison, containment (in), and length (len())
 
*** Boolean Operators: and, or, not
 
** Conditional Logic: if, elif, else, code blocks
 
** String manipulations: string casing, str.strip(), str.replace(), \n vs \r\n
 
** Functions:  Data are nouns, Functions are verbs, defining vs calling, arguments, return values
 
** Collections: list, dict, reference by index or key, converting dict,keys(), dict.values(), iteration with for loop
 
** Loops: for and while, while is most powerful, for is syntactic sugar, collect stdin on a loop
 
** File I/O: read, write, append, import os.path
 
** Parse File Data: CSV, .split(","), .split("\n")
 
** Random Numbers
 
** Terminal Animation - sleep()
 
** Sets, Tuples
 
** System Arguments - import sys
 
* Can take a specification and produce code implementing it
 
* Python3 programming and debugging
 
* Understanding of primitive data types and basic Boolean logic
 
  
CS 201 Programming Structures
+
==Minor==
* 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
+
Note - number of credit hours for courses are in parenthesis.
* Note - overall goal - get them to spend as much time programming as needed (and enjoy it)
+
* '''Computer Science Minor''' - modified to consist of - CS 151 (3), 201 (4), 351 (4), 4 hours of electives.  This update preserves the requirement that a CS minor takes the "core" of the CS major that is required for most upper level CS courses.  ''Previously, [https://catalog.indstate.edu/preview_program.php?catoid=39&poid=5721&returnto=1208 the minor] was - CS 151 (3), CS 201 (4), CS 202 (4), 9 credits of CS electives with at least 6 at the upper division level.''
* Review/new - all of the python3 from CS 151, assume that the average student will have retained half of it and be able to refresh it in half as much time as the first time
 
* 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)
 
* Algorithms - searching and sorting, demo different running times for different algorithms
 
* Data structures - focus on python3 data structures (lists, tuples, dictionaries) and running time for these, basic idea for how they are implemented
 
* Algorithms - basics of big-O, be able to make predictions of running time for larger dataset sizes
 
* Running time - algorithms with log, linear, n log(n), quadratic, cubic, exponential growth - and demonstrate different running time behavior of them
 
* I/O with different data formats and number systems
 
  
CS 303 Discrete Structures / Intro Theory
+
=Graduate - Revised Programs=
* Logic - De Morgan's law, boolean operations, truth tables, inclusion-exclusion principle
+
The changes being proposed from the [https://catalog.indstate.edu/preview_program.php?catoid=42&poid=6215&returnto=1354 current MS] are as follows.
* base systems
+
* '''Courses required for all concentrations''' - unchanged
* algebra / logarithmic / exponential growth
+
* '''Bioinformatics concentration''' - allow either CS 500 or CS 501 (can count CS 501 in place of CS 500)
* Big O, formal and informal definitions of important complexity class (L, P, NP, PSPACE, EXP)
+
* '''Professional concentration''' - also require CS 501 Programming for Data Science
* Concept of a general-purpose computer (maybe TM, maybe VN), Church-Turing thesis
+
* '''Academic Concentration''' - CS 658 Algorithms II, CS 558 Algorithms if not taken at ISU, CS 671 Operating Systems II, CS 556 Systems Programming if not taken at ISU.
* Proofs - line/geometry/propositional logic, contradiction, induction (weak and strong)
+
* '''Data Science Concentration ''' - new concentration, see below.
* pattern matching (maybe don't call it DFA's/NFA's/RE's)
+
* '''Accelerated MS''' - 4+1 BS+MS.  ''Common components of all 4+1 programs'' - student must have at least 3.0 GPA and have completed at least 80% of credits by start of fourth year, can take up to 9 500 level credits as senior and have count for both BS and MS, can take up to 6 600 level credits as senior which do not count for BS or towards 120 credits or for full time status for financial aid.  Specific to CS 4+1 - approved to take any 500/600 level CS for which students have met prereqs, a 4+1 degree map for each concentration is attached. 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].  ''Note - still being worked on, may not be ready for fall 2020.''
* 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
+
==Data Science - New Concentration==
* C
+
 
* Assembly language - small subset of something real, or something artificial.  Should include key concepts, doing coding in whatever language is chosen.
+
'''Admissions''' To declare the data science concentration, students must demonstrate competency (through coursework/transcript or otherwise) in the following - basic programming and data structures, 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 201 Programming Structures, MATH 131/132 Calculus I/II, MATH 313 Elementary Linear Algebra.
* 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
+
'''Curriculum'''
* Design choices in programming languages - terms, pros/cons, examples, history of programming languages
+
* CS 501 Programming for Data Science (3) (if 401 not taken as undergrad)
* Functional programming, including reasonable sized programming assignments
+
* CS 557 Database Systems (3) (if 457 not taken as undergrad)
* Object-oriented programming - review, including laundry list of terms and such
+
* CS 575 Artificial Intelligence (3) (if 475 not taken as undergrad)
* Concurrent programming - in particular how programming language design plays a role
+
* CS 601 Programming for Data Science II (3)
* What else?  Logic programming?
+
* CS 617 Databases, Data Mining, and Big Data (3)
* Do some interesting programs in the top-10 tiobe languages (currently - java, C, python, C++, C#, visual basic .net, javascript, php, sql, objective-c)?
+
* MATH 503 Linear Algebra and Modeling for Data Science (3)
 +
* MATH 540 Statistics for Data Science (3)
 +
* Electives and culminating experience approved by the advisor to complete student's plan of study and at least 17 credits of 600 level coursework
  
CS 499 Senior Design
+
=Course Descriptions=
* prereq - senior standing, CS 201, 203, 251
+
Note - all courses required in the BS and MS programs are listed here'''For courses where the catalog description is being updated, the course is marked with ++ (so use Find in your browser and search for ++ to see those courses).'''  Courses where a name/#hours/course# change is being made are listed as the proposed name/#hours/course# but are marked with **; the original name/#hours/course# for these courses are listed above under "Courses".
* 2 credits/term, taken for two terms
 
* First term - reasonable sized project involving whatever is hot at the momentCurrently - 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===
+
==BS Major Courses - All Concentrations==
CS 202 Data Structures and Alg
+
* '''CS 151 Intro to CS''' - ++ Core concepts that are foundational in computer science including - programming, use of computers for dealing with files and programs, how data is stored, number systems. Focus on building skills needed for programming and further study in computer science, and intermediate mastery of a particular programming language. ''Previous description - History of computers and computer science, principles of process description, and problem analysis. The basic structures of sequence, iteration, and selection. Programming style, artificial intelligence, current applications.''
* 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.
+
* '''CS 201 Programming Structures ** (4)''' - ++ This course is a continuation of CS-151. Advanced programming structures, patterns, and concepts such as classes, classical inheritance, functional programming, singletons, generators, data structures, sorting algorithms, and other design patterns''Previous Description - This course begins with a history of programming languages, then focuses on programming in a particular language. The following topics are covered in some detail: variables, expressions and operators, control structures, simple data types, arrays, classes, and objects. Algorithm design and security issues are also discussed.''
* Memory organization - text, data, heap, stack, malloc, free, pointer arithmetic
+
* '''CS 303 Discrete Structures and Computing Theory ** (4)''' - ++ Mathematics content that is foundational to and useful for computer science.  Topics include axioms and proofs, induction, graph theory, probability, finite automata, regular expressions, Turing machines, and the Church-Turing thesis.  ''Previous description - This course is an introduction to discrete mathematics for computer science. The course covers the basic topics from set theory (including functions and relations), logic, number theory, counting, graph theory, and discrete probability. It involves a detailed study of proof techniques.''
* Unix and debugging - gdb, grep, sed, awk, find, compiler options, makefiles, unix regular expressions, reading manual and manual organization, pipes, I/O redirection
+
* '''CS 351 Computer Organization ** (4)''' - ++ This course examines in some detail how a computer works. To prepare for this study, students will learn the basics of binary arithmetic, data representation, along with propositional and predicate logic. The major hardware components of a computer, including processors (CPUs), memory (RAM), storage and other peripheral devices will be examined in some detail. Computer software will also be studied. The process of program translation and execution will be outlined. Students will learn machine language and learn to write and run simple assembly language programs. Operating system functions and the organization of file systems will be studied.
* Basic data structures - start with Python3 data structures and do them in C (and compare run times).
+
* '''CS 470/570 Programming Languages''' - ++ An introduction to programming in a wide variety of programming languages and paradigms.  Paradigms include: imperative/procedural, object-oriented, functional, logic, concurrentA focus is placed on obtaining proficiency in many languages.  Also considered are the syntax and semantics of programming languages. ''Previous description - The purpose of the course is to develop an understanding of the organization of programming languages and introduce the formal study of programming language specification and analysis. Topics covered usually include: language definition structure, data types and structures, control structures and data flow, run-time consideration, interpretative languages, lexical analysis, and parsing.''
* 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).
+
* '''CS 499 Senior Design ** (2+2)''' - ++ The senior design is a two semester sequence.  Students enroll during their last two terms.  Students complete an independent project involving the entire development cycle - requirements/needs analysis, prototyping, testing, deployment, maintenance.  Students also prepare for the process of applying for and interviewing for jobs or a graduate program.  ''Previous description - The senior seminar is taken by students in their last year.  The course prepares students for the process of applying for and interviewing for jobs or a graduate program.  Students also present on current topics in computer science.''
* 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 treeCan 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
+
==BS Major Courses - Computing Science==
* Version control: Make, RCS, Git
+
* '''CS 202 Data Structures and Algorithms** (4)''' - ++ This course is a continuation of CS 201.  It involves a deeper study of algorithm design and analysis and data structures.  Students are able to choose the best data structures and algorithms to solve a problem and implement the solution in code.  Students also practice programming in a variety of settings, which may include - parallel programming, network programming, graphics, security, and data science.  ''Previous description - This course is a continuation of CS 201. It involves a deeper study of programming languages, but emphasizes programming in a particular language. Topics include algorithm design and analysis, data structures, recursion, threads, network programming, graphics, security, and ethics.''
* File system I/O - open/close/read/write, printf/scanf, opendir/closedir/readdir/stat
+
* '''CS 456 (3) / 556 (3) Systems Programming''' - An introduction to both program translation and operating systems. There will be a survey of topics such as: top-down and bottom-up parsing, scanning, code generation, symbol table management, linkers and loaders, batch processing systems, interacting processes, multiprogramming systems, and memory management.
* Disk organization - inodes, superblocks, etc.
+
* '''CS 456L (1) Systems Programming Laboratory''' - A series of programming exercises and laboratory work to support CS 456.
* Local interprocess communication: signals, socketpairs, shared memory.
+
* '''CS 458 (3) / 558 Algorithms (3)''' - Among the topics covered are: review of basic data structures and their implementations; graphs, both directed and undirected; analysis of algorithms; sorting, searching, and merging, both internal and external methods; memory management algorithms; mathematical algorithms; and, as time allows, advanced topics such as NP-complete problems.
* Fork and execve: how shells work.
+
* '''CS 458L (1) Algorithms Laboratory''' - A series of programming exercises and laboratory work to support CS 458.
* Regular expressions (review!)
+
* '''CS 471/571 OS''' - ++ This class introduces the basic functionality provided by computer operating systems, and covers three main topics. The first topic is memory management; specifically dynamic memory allocation, dynamic address translation, virtual memory, and demand paging. The second topic concerns processor management and concurrency; how do we manage multiple tasks that execute at the same time and share resources. Subtopics in this section include processes and threads, context switching, synchronization, scheduling, and deadlock. The third topic concerns file systems and storage management; the organization and operation of an example file system will be discussed in detail.  ''Previous description - Major topics include system structure, memory management, and process management. Hands-on experience using the department’s minicomputer facilities are an important part of the course.''
* Condensed introduction to x64 assembly language.
+
* '''CS 473/573 Networking''' - The course is an introduction to networking and includes detailed study of Internet protocols and socket programming. Topics include a study of IP, UDP, and TCP protocols, as well as application layer protocols such as HTTP and SMTP. Students learn to program both a client and server.
* 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
+
==BS Major Courses - Data Science==
* Some things that are listed under CS 202
+
* '''CS 202 Data Structures (4)''' - see under Computing Science Concentration
* String matching algorithms
+
* '''CS 401 (3) / 501 (3) Programming for Data Science ** ''' - Intensive programming course with a focus on solving problems in data science, specifically focusing on big data and dealing with different data formatsStudents are introduced to data mining and machine learning algorithms with a focus on being able to use programming packages.  Data mining and machine learning focus on algorithms that automate the process of discovering patterns in, and devising models for, large datasets''Previous description - Thorough programming course with a focus on solving problems in data science and analytics, specifically focusing on big data and dealing with different data formats.''
* Graph algorithms - BFS, DFS, connected components, shortest path, MSTOthers?
+
* '''CS 401L (1) Programming for Data Science Laboratory ** ''' - A series of programming exercises and laboratory work to support CS 401.
* Linear programming
+
* '''CS 417 Machine Learning (3) ** ''' - ++ A continuation of CS 401.  A thorough study of data mining and machine learning algorithms, the overall process and the main techniques used in data mining and machine learning, including exploratory data analysis, predictive modeling, descriptive modeling, and model evaluation.  
* Dynamic programming
+
* '''CS 457 (3) / 557 (3) Database Systems''' - see under Information Science Concentration
* Sorting algorithms - quadratic time, merge sort, quick sort, heap sortOthers?
+
* '''CS 457L (1) Database Systems Laboratory''' - see under Information Science Concentration
* NP-complete / optimization problems - definitions and reductions, a few example problems
+
* '''CS 475/575 Artificial Intelligence''' - Concepts and applications, including artificial intelligence programming languages, history, present and future development and research, expert systems, natural language processing, intelligent machines/robots, and vision. Development of artificial intelligence course project.
* 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
+
==BS Major Courses - Information Science==
* Review - functions every citizen should know, basic data structures in C
+
* '''CS 101 Fundamentals of Computing''' - The main focus of the course is to give students a practical understanding of computing to become well-informed citizens and professionals in the computing age.  Topics may include a basic study of - computational thinking, computer security, big data, artificial intelligence, and current trends in computing.
* Device Management, typically focusing on storage devices and filesystems
+
* '''CSS 210 Intro Networking''' - ++ Topics include network types and communication models, hardware components, applications, protocols, standards, internetworking and routing concepts, OSI Model, TCP/IP, LAN, WAN networking technologies, ''Add also - '' computer networks and the internet, application layer, transport layer, network layer, link layer, wireless and mobile networks, security in computer networks.
* ext2 file system in detail
+
* '''CSS 211 Intro Security''' - ++ This course focuses on the foundation for the study of computer system security. The course centers around the domains comprising the information security common body of knowledge. Students will learn the security management practices as well as security architecture and models, security laws, and investigations. '' Add also - '' Specific topics may include authentication, access control, cryptography, programs and programming, the web, operating systems, networks, databases, cloud computing, privacy, management and incidents, legal issues and ethics, emerging topics.
* Other filesystems at a high level
+
* '''CSS 331 Files and Databases''' - ++ This course introduces the concepts and tools surrounding persistent data storage.  It covers the physical construction of storage devices, the implementation of file-systems and files, and database design and terminology with an emphasis on implementation in the real world.  ''Previous Description - This course introduces the basic database concepts. The course stresses the implementation of databases in the real world. Students learn about basic database design and terminology, and learn how to create a variety of databases using MS Access.''
* Process/Thread Management
+
* '''CS 170 Web Programming''' - ++ An introduction to web programming methods and languages. Includes an introduction to the standard HTML/CSS/JavaScript triumvirate of languages for client-side web page development. May also include an introduction to web servers, web applications, web API's and back-end systems, as well as topics covering current trends in the field. ''Previous Description - An introduction to World Wide Web programming methods and scripting languages. Includes Hypertext Markup Language (HTML), Cascading Style Sheets (CSS), Dynamic Hypertext Markup Language (DHTML), JavaScript, and VBScript.''
* Single CPU execution - time slicing, scheduling
+
* '''CS 457 (3) / 557 ** (3) Database Systems''' - ++ The course will provide an introduction to the use of data management systems for applications, an understanding of how such systems function, and the advantages and disadvantages of various types of database systems. The first part of the course will deal with the relational model, and will include an introduction to Relational Algebra and SQL. NoSQL database systems will also be studied.  Topical examples will include key-store, document, graph, and other categories of database management systems. The underlying data structures and algorithms that support database systems will also be reviewed.  ''Previous description - Data independence, relational model, relational algebra and calculus, query languages and SQL, conceptual modeling, database design, data dependencies and normalization, access methods, tables, queries, forms, macros and reports, database administration, introduction to transaction processing, concurrent transactions, and recovery. Case studies of commercial database systems such as Oracle and Microsoft SQL Server.''
* Multi-core execution
+
* '''CS 457L (1) ** Database Systems Laboratory''' - A series of programming exercises and laboratory work to support CS 457.
* Shared data - semaphores, other mechanisms, synchronization issues, race conditions
+
* '''CS 469/569 Unix/Linux Admin & Networking''' - Includes installation and configuration of Unix/Linux operating system software; set-up of hardware and software for Unix/Linux networking including TCP/IP, FTP, Telnet, DNS, DHCP, and Apache; Unix/Linux administration tasks including directories, users, tuning, backup, security, and networking.
* Memory Management
+
* '''CS 479/579 Web Prog II''' - Advanced programming for the World Wide Web and the Internet. This course includes three approaches: the older CGI/PERL, Microsoft’s Active Server Pages (ASP), and Sun’s Java Server Pages (JSP). The course also includes the setup and configuration of World Wide Web servers including Apache and Microsoft’s IIS.
* Memory organization, virtual memory, pages, page faults, CPU cache
 
* Other Topics, as time allows
 
  
CS 473 Networking
+
==BS Service Courses - Required in Other Majors==
* History and Operation of Packet Networks and Switched Networks
+
* '''CS 256 Principles of Structured Design''' - IT major - An introduction to structured programming and top-down design; applications to a wide variety of practical programming problems.
* Layered Protocols: TCP/IP and (maybe) OSI.
+
* '''CS 260 Object Oriented Programming''' - some tech majors - Object oriented programming concepts and methods. Includes encapsulation, data abstraction, class development, instantiation, constructors, destructors, inheritance, overloading, polymorphism, libraries, and packages.
* 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===
+
==BS Elective Courses - Not Required in Any Concentration==
CS 101 Fundamentals of Computing
+
The following are required in the current CS BS and no longer will be under the proposal (CS 420 and 421 are/were only required in the Computing Science Concentration).
* Somewhat closely parallel AP CS Principles (it happens to work out to what we'd want to do)
+
* '''CS 420/520 Theory of Computation''' - teach out - A sampling of the different areas of theoretical computer science: finite state concepts, formal grammars and automata, computability, Turing machines, and program verification.
* basic understanding of how computers work
+
* '''CS 421/521 Formal Methods''' - teach out - Elements of formal logic; various approaches to automation including resolution; restrictions and search methods; inductive theorem-proving; Knuth-Bendix completion; Boyer-Moore theorem-prover; applications.
* basics of programming
+
* '''CS 452/552 Software Engineering''' - teach out - ++ This course studies the software life cycle: specification, object-oriented programming and design, program development, validation, testing, debugging, documentation, maintenance, revision control, CASE tools. ''Remove the following from the description - The course serves as a culminating experience in the CS major. Students complete a significant software project during the course that ties together much of what has been learned in other CS courses. Students give a presentation describing and demonstrating their project; these presentations are open to the rest of the department.''
* 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
+
==CS Teaching Minor==
* Client-server relationship and front-end back-end architecture
+
* '''CS 101 Fundamentals of Computing (3)''' - see under Information Science Concentration.
* Editors, multi-file projects, code linters, and workflow
+
* '''CS 151 Introduction to Computer Science (3)''' - see under BS required courses.
* The JavaScript event loop and asynchrony
+
* '''CS 260 Object Oriented Programming (3)''' - Object oriented programming concepts and methods. Includes encapsulation, data abstraction, class development, instantiation, constructors, destructors, inheritance, overloading, polymorphism, libraries, and packages.
* The JavaScript prototype and the `this` keyword
+
* '''ECT 173 Fundamentals of Information Technology (3)''' - This  is a survey course of the Information Technology (IT) industry, and an overview of IT as a discipline.  Presented as a variety of concepts and topics utilized by IT professionals including: the role of IT in organizations, hardware, software, data organization, decision support, e-commerce, telecommunications and networking, the Internet and intranets, artificial intelligence, system development, and security and ethical issues.
* EcmaScript latest additions
+
* '''CS 305 Computer Science Teaching Methods (3)''' The methods, materials, and applications of teaching computer science in elementary, middle, and high schools.  Computer science education is explored as it relates to National K-12 and Indiana state standards.  Various components including computing systems, networks, data, algorithms and programming, and digital citizenship are examined along with expectations from licensing and certifying agencies.
* 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
+
==MS Major Courses - Required of All Concentrations==
 +
* '''CS 685 Software Project (3-6)''' - The total development of an advanced software project in areas such as artificial intelligence, expert systems, data bases, data communications, operating systems, compilers, assemblers, coding theory, graph theory, word processors, and editors.
 +
* '''CS 695 Computer Science Research (3-6)''' - Research studies in computer science.
 +
* '''CS 699 Computer Science Internship (0-3)''' - Coordinated computer science work experience in business/industry or equivalent project work within the department. A comprehensive written report of the experience, including documented samples of software developed by the student, is required.
  
CSS 211 Intro Networking
+
==MS Major Courses - Academic Concentration==
 +
* '''CS 658 Algorithms II''' - ++ A continuation of CS 458/558.  A complete study of algorithm design techniques, including dynamic programming, greedy algorithms, divide and conquer, network flow, linear programming.  Students are able to use these techniques to design algorithms for new computational tasks, including proving the running time and correctness of the algorithms.  The course also focuses on NP-complete problems and techniques and analysis for handling computationally hard problems, including approximation algorithms and fixed-parameter algorithms. ''Previous description - Recurrences, probabilistic analysis, randomized algorithms, red-black trees, amortized analysis, Fibonacci heap, disjoint set union, the all pairs shortest path problem, and maximum flow.''
 +
* '''CS 671 Operating Systems II''' - ++ A continuation of CS 471/571.  A continued look at how operating systems manage the three key resources that must be shared in computing environments - processing, memory, and long-term storage - including the system code itself and tradeoffs between different strategies.  A significant programming project is completed, for example writing system modules for a modern operating system environment.  The key OS concepts are applied to various settings, including computing clusters, cloud environments, and security considerations.  ''Previous description - Understand and use the basic concepts of operating systems. Introduction of processes such as the processing unit, process management, concurrency, communication, memory management and protection, and file systems.''  Prereq updated to be - C or better in CS 456, CS 471, CS 556, or CS 571.
  
CSS 311 Files and DB
+
==MS Major Courses - Bioinformatics Concentration==
 +
* '''CS 500 Programming Fundamentals''' - see under Professional Concentration.
 +
* '''CS 501 Programming for Data Science I''' - see CS 401 under BS (grad section entails some additional work but the same basic description).
 +
* '''CS 600 Concrete Mathematics''' - see under Professional Concentration.
 +
* '''CS 557 Database Systems''' - see CS 457 under BS (grad section entails some additional work but the same basic description).
 +
* '''CS 617 Databases, Data Mining, and Big Data''' - see under Data Science Concentration.
 +
* '''CS 618 Computational Biology''' - An introduction to computational biology. Topics may include principles and methods used for sequence alignment, motif finding, structural modeling, structure prediction and network modeling, as well as currently emerging research areas. A focus is placed on the computational cost of solving problems ­ in terms of CPU time, memory, and disk space. Study of the core algorithms used to solve problems.
  
 +
==MS Major Courses - Data Science Concentration==
 +
* '''CS 501 Programming for Data Science I''' - see CS 401 under BS (grad section entails some additional work but the same basic description).
 +
* '''CS 557 Database Systems''' - see CS 457 under BS (grad section entails some additional work but the same basic description).
 +
* '''CS 575 Artificial Intelligence''' - see CS 475 under BS (grad section entails some additional work but the same basic description).
 +
* '''CS 601 Programming for Data Science II''' - A second course in programming related to data science and analytics.  Ability to handle data in non-standard formats, utilize cloud/cluster for computationally intensive analysis/simulation, and produce interactive interfaces to data and results.  Use of machine learning tools.
 +
* '''CS 617 DB, Data Mining, and Big Data''' - Introduction to using relational databases to accomplish common data storage and analysis needs. The techniques and tools available to deal with data that is too large to store in a database running on a single server. Topics may include data warehousing, map reduce, association rules, machine learning, and streaming algorithms.
  
CS 457 Databases
+
==MS Major Courses - Professional Concentration==
* Database Models
+
* '''CS 500 Programming Fundamentals''' - Review of undergraduate topics in Computer Science including Data Structures, Computer Architecture, and Computer Organization.  Review of a computer programming language that students can expect to use in advanced courses.
* Relational Algebra
+
* '''CS 600 Concerete Mathematics''' - An introduction to discrete mathematics for computer science graduate studentsStudents gain the skills needed to model problems abstractly, analyze solutions, and prove program correctness and efficiency.  Typical topics include logic, induction, basic combinatorics, discrete probability, graph theory, and asymptotic growth of functions.
* SQL - A reasonably comprehensive introduction to SQLSQLite is a very good, easy to use, vehicle for this part of the course.
+
* '''CS 602 Mobile and Cloud Computing''' - The course deals with development and design of applications and systems for mobile and cloud computing. Challenges inherent to mobile and cloud computing are studied, such as security, consistency, fault­tolerance, useability, and efficiency in mobile and cloud settings. Students are exposed to development on mobile devices and writing software for cloud computing.
* Database design: logical design, physical design, security design.
+
* '''CS 603 Networking and Security''' - Introduction to the architecture and protocol of the internet and other networks, including networking configuration and management. Security considerations in networking and in general, including the types of exploits that are possible and how to mitigate risk.
* Database design: ER diagrams, normal forms, functional dependencies, transitive closure, etc.
+
* '''CS 609 Web Programming and Applications''' - An introduction to development and administration related to the web. Topics may include software design, client-side and server-side development, web applications, data management, and security.
* Transactions: query processing, ACID, logging, indexing, hashing, B+ trees, joins.
+
* '''CS 610 Survey of Programming Languages''' - ++ A study of programming in a wide variety of programming languages and paradigms.  Paradigms include: imperative/procedural, object-oriented, functional, logic, and scripting.  A focus is placed on obtaining proficiency in many languages. A second focus is on understanding language theory, design choices, and implementation. ''Previous description - An introduction to programming in a wide variety of programming languages and paradigms.  Paradigms include: imperative/procedural, object-oriented, functional, logic, and scripting.  A focus is placed on obtaining basic proficiency in many languages.  A second focus is on understanding language theory, design choices, and implementation.''
* SQL - More advanced features (PL/SQL functions, triggers, etc.)
+
* '''CS 611 Software Spec and Design''' - Approaches to software specification and development, such as Z and VDM. The course also explores the use of software tools available for use with software specification and development methods.
* NOSQL: discuss a subset of the following (whatever’s hot)
+
* '''CS 617 Databases, Data Mining, and Big Data''' - see under Data Science Concentration.
* XML
+
* '''CS 618 Computational Biology''' - see under Bioinformatics Concentration.
* Mongodb
+
* '''CS 619 Trends in CS''' - A seminar on the current topics within computer science that are both new and of high interest within the research community and/or industry. Exposure to the latest technologies is provided.
* Redis
 
* levelDB
 
* DataFrames - Python/pandas
 
* Cassandra
 
* many more possibilities
 
  
CS 469 Unix/Linux Administration and Networking
+
==MS Elective Courses - Not Required in Any Concentration==
* Wild-cards and regular expressions
+
* '''CS 620 Theory of Comp II''' - Turing machines, the Church-Turing thesis, decidability, the halting problem, reducibility, recursive function theory, the recursion theorem, time and space complexity, classes P and NP, NP-completeness.
* Files and directories:
+
* '''CS 621 Discrete Struct II''' - Symmetry and counting, automorphism groups of combinatorial structures, finite fields and applications, error correcting codes, and generating functions.
** The file-system tree, path traversal, links
+
* '''CS 652 Soft Eng II''' - Topics covered include design patterns, aspect-oriented application development, business rule approach to application development, XML processing and applications, refactoring, clean room techniques, and domain driven design.
** Unix permissions and ACLs
+
* '''CS 670 Concurrent Programming''' - Fundamental concepts are covered including concurrency, synchronization, safety and liveness, fairness, axioms and inference rules. Concurrent execution with shared variables, semaphores of, critical regions, monitors; concurrent execution using message passing: asynchronous and synchronous message passing; concurrent programming languages and environments.
** The FHS standard: where things go in the file-system
+
* '''CS 673 Networking II''' - Topics include internetworking philosophies, unicast and multicast routing, congestion control, network quality of service, mobile networking, router architectures, network-aware applications, content dissemination systems, network security, and performance issues. Material for the course will be drawn from research papers, industry white papers, and Internet RFCs.
* 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
+
=Curriculog Text=
* 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===
+
==Courses==
Common to all CS majors
+
'''Catalog description''' - The following text is used for Justification in curriculog for courses that are only having their catalog description updated - "Catalog description is being updated.  This is a minor change.  Note that the CS BS and MS programs are also being updated this academic year.  This course is a required course in the BS/MS.  To see a summary of the rest of the CS curriculum updates being proposed, see https://cs.indstate.edu/wiki/index.php/CS_Curriculum_Revisions_2019-2020".
* CS 151 Intro to CS, 201 Programming Structures, 303 Discrete Structures / Intro Theory, 351 Intro to Systems, 470 Programming Languages, 499 Senior Design
 
* Math 241 Principles of Stats or 341 Prob and Stats
 
  
Required for DS concentration
+
'''Prerequisites''' - For courses that are having prerequisites updated, the following is included in the Justification - "Prerequisites for this course are being updated based on updates to the CS BS/MSPrerequisite is being updated to - BLANK; previously the prerequisites were BLANK."
* CS 202 - see CS concentration
 
* CS 457 - see IS concentration
 
* CS 475 AI
 
* CS 401 Programming for Data Science and Anal I
 
* Math 131 Calc I, 132 Calc II, 313 Linear Algebra
 
* Math 403 Stats for Data Science [assuming prereqs work out] - once this course is createdIn the meantime, substitute Math 252 on the proposal?
 
  
====BS in DS from Math====
+
'''Name change''' - For courses that are having their name changed, the following is included in the Justification - "The name of this course is being updated (previously was BLANK) to more accurately reflect the current content of the course and its place within the BS/MS programs."
Note - Math is considering adding a BS in DS.  What they are thinking is the following.
 
* Math 131 Calc I, 132 Calc II, 313 Elementary Lin Alg, 241 Principles of Stats, 252 Programming in Math, 341 Prob and Stats, 342 [what was the name?], 403 Stats for Data Science
 
* CS 151 Intro to CS (in python), 201 Programming Structures (in python), 401 Programming for Data Science (python and R), 457 Database
 
* Math 320 Discrete Math or CS 303 Discrete Structures
 
* Bus 180 Business Information Tools
 
* OSCM 310 Data driven decision making
 
* OSCM 320 Problem solving with spreadsheets
 
* Capstone - Math 494
 
  
=CS MS Major=
+
'''Credit hours change''' - For courses that are having their # credit hours updated, including the following in the Justification - "The # of credit hours is being updated (will be BLANK, previously was BLANK).  The previous # of credit hours was not sufficient to adequately meet all of the learning outcomes that are desired for this course."
  
==Required for all Majors==
+
'''Lab courses''' - For new lab courses, or for courses matched with new lab courses, put the following in the Justification - "Note that a lab course is also being added, BLANK that is 1 credit and will give the students more time to work on programs under instructor guidance."
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.
+
'''Impact and Notification''' - Where appropriate, included the following in the Impact and Notify other Departments fields.  Impact - "COURSE is required in the MAJOR major and is an option in the MAJOR major.  This is a minor update to the catalog description to reflect how the course is being taught."  Notification - "The DEPARTMENT(S) has (have) been notified of the update."
  
==Academic Concentration==
+
'''Prerequisite''' - For courses that will not require CS 201 in place of CS 202 (because CS 202 is no longer required of all concentrations), include in the Justification - "Replacing prerequisite of CS 202 with CS 201 because CS 202 will no longer be required for all concentrations in the CS BS.".
* 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
+
==Programs==
  
==Professional Concentration==
+
===Computer Science BS===
* Retain current requirements - CS 500, CS 600, 1 course from 602-609, 1 course from 610-618, 1 additional course 602-618
+
The proposal is a revision of the Computer Science BS including an addition of a new concentration in Data Science.  The CS faculty have been working on the proposals for the past two academic years.  The revision is a result of looking at program assessment, discussions among faculty about how to best prepare students for upper level courses, and feedback from alumni on current industry demand.  All of the proposals received a unanimous vote at the department level (all CS regular faculty).
* CS 501 Programming for Data Science & Analytics I - now required
 
  
==Bioinformatics Concentration==
+
The following are the main aspects of the revision -
* Retain everything from current requirements
+
# Core of the major that is required for all majors has been reworked. 
* Allow CS 500 or CS 501 to count
+
## The main sequence was currently CS 151 Intro to CS, 201 Computer Science I, 202 Computer Science II.  It will now be CS 151, 201, 351 Computer Organization.  CS 201 and 202 are being renamed to CS 201 Programming Structures and CS 202 Data Structures and Algorithms to better reflect the content of the courses.  We replace CS 202 with CS 351 Computer Organization in the core.  This will give students better mastery of computer organization going into the rest of the courses in the major.  We have identified this need based on students' knowledge and skillset coming in to the upper level CS courses.  A statistics course will also be required for all concentrations.  This will firm up the mathematical foundations for the students.
 +
## The core of courses required of all concentrations has been reduced.  Some courses are now only required in the Computing Science Concentration (CS 202 Data Structures and Algorithms, CS 456 Systems Programming, CS 471 Operating Systems).  One course is no longer required of any concentrations (CS 420 Theory of Computation).  Additional courses are being added to the Information Science Concentration - CS 101 Fundamentals of Computing, CSS 210 Intro to Networking, CSS 211 Intro to Security, CSS 331 Files and Databases.  This gets the students in the concentration into these application areas sooner, and also increases the cross-over between the Cyber and Security Studies major and this concentration in the CS major (these are all options in the CSS major).
 +
## The culminating experience CS 499 is being renamed from "Senior Seminar" to "Senior Design" and will be taken as a year-long sequence with 2 credits per semester (was currently 1 credit in 1 semester).  In addition to the career readiness outcomes currently in CS 499, a yearlong project will be completed.
 +
# Lab sections for key senior level courses are being created and required (for CS 456 Systems Programming, CS 457 Database Systems, CS 458 Algorithms, CS 401 Programming for Data Science).  Two other key courses will be 4 credit hours (CS 303 Discrete Structures and Computing Theory, CS 351 Computer Organization) to give students more time guided by instructors to work on programming exercises.
 +
# New concentration in Data Science.  Data Science is very popular right now, with students and parents asking if we offer the major.  The proposed Data Science Concentration is from existing courses and two newly proposed courses.  The Data Science offering at the MS level are currently the most popular courses.  We expect the BS Data Science courses to be popular as well.  Having Data Science programs has potential to positively impact enrollment.
 +
# Catalog descriptions and names - catalog descriptions and names of some courses are being updated.  Most courses have not been updated in at least 10 years, and the updated descriptions are minor updates based on how the courses are currently being taught.
  
==Data Science - New Concentration==
+
Note that the total # of credit hours in the major has stayed the same (currently 51-53 credit hours, will be 50-51 credit hours).
 +
 
 +
A draft teaching schedule has been created that would allow courses from the current version of the major and the new version of the major to both be offered over the next few years with current staffing.
 +
 
 +
Note that a complete list of all curriculum changes is at https://cs.indstate.edu/wiki/index.php?title=CS_Curriculum_Revisions_2019-2020.
 +
 
 +
All units impacted by any of the CS courses have been notified.
 +
* The IT major from the ECET major requires CS 151 Intro to CS, CS 256 Structured Design, and CS 170 Web Programming I.  CS 151 and CS 170 will see minor updates to their catalog description, and no significant changes.
 +
* The MIS minor in the MIS&BE department and the IRM minor in the AFIRM department have CS 101 Fundamentals of Computing as an option in the minors.  There is only a minor change in the catalog description. 
 +
* The MIS major has CS 452 Software Engineering as an option in the major.  CS 452 will no longer be required; it will be offered the next few years for current CS students and may not be offered every year after that.
 +
* The CSS major in the School of Criminology and Security Studies requires courses CS 101, CSS 210, CSS 211, CSS 331 that will be used as part of the Information Science Concentration.  The School has indicated its support of the proposals (email confirmation in the file attachments).
 +
* AFIRM offers a minor in Business Analytics.  Business Analytics and Data Science are sufficiently different that we believe both programs should be offered by the university, and normally will be serving different populations of students.  AFIRM has indicated that the changes to not impact their programs (confirmation in file attachments).
 +
 
 +
We have not received any feedback from ECET or MIS&BE.
 +
 
 +
===Computer Science Minor===
  
===Admissions===
+
The current CS minor requires the "core sequence" - CS 151 Intro to CS, CS 201 Computer Science I, 202 Computer Science II -which is required of upper-level CS courses in addition to 9 CS electives with at least 6 at the upper level.
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===
+
Note that CS 201 and 202 are being renamed - CS 201 Programming Structures, CS 202 Data Structures and Algorithms.  These names give a better reflection of the content in the courses than simply "Computer Science I" and "Computer Science II".
* 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 coursesAdding 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).
+
The minor is being revised based on revisions to the CS majorThe new core sequence to the CS major will be CS 151 Intro to CS (3 credits), 201 Programming Structures (4 credits), 351 Computer Organization (4 credits).  The revised minor will require CS 151, CS 201, CS 351, and 4 hours of electives.  The number of credits required is being reduced from 20 to 15 to allow more students to fit the minor in to their schedules.
  
Note - update CS 617 curriculum and name, 617 python, 501 python
+
To see a summary of all CS curriculum updates this year, see https://cs.indstate.edu/wiki/index.php/CS_Curriculum_Revisions_2019-2020
  
Electives approved by advisor.
+
The students who most commonly minor in CS are majors in IT, Mathematics, and Physics.  ECET and Chemistry & Physics have been notified of the proposed changes.  The number of credits needed by these majors to complete the CS minor will go down due to the reduction from 20 credits to 15.  We expect that most CS minors will still choose to complete additional CS coursework above 15 hours.
  
Note - 503 - remove diff eq, towards regression and progression, gradient (since no calc III)
+
===Computer Science Teaching Minor===
 +
A new minor in Computer Science Teaching is proposed.  The minor focuses on (a) CS skills necessary to teach courses that are licensed in Indiana by the Computer Educator license, (b) methods in CS teaching.  Given the wide array of courses that Computer Educator licenses (at the high school level - networking, database, programming, cybersecurity, AP computer science, ...) the largest focus is on CS content.  Existing CS and ECT courses have been chosen to align with the Indiana state standards for Computer Educator.  A single new CS teaching methods course (CS 305 Computer Science Teaching Methods) gives students experience in designing lesson plans in CS, assessing student work, etc. 
  
==Accelerated 4+1 BS+MS==
+
An ISU student would only obtain the Computer Educator license if they major in an education major and minor in Computer Science Teaching.   
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 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 BSUp 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==
+
The minor is being proposed in part due to (a) a continuing lack of qualified teachers to teach CS in K-12, and (b) a focus by the state of Indiana on improving CS teaching in K-12 and curriculum.  The CS Teaching Minor could be attractive to either (a) education majors in STEM areas (e.g., mathematics, science), or (b) education majors for which teaching positions are particularly difficult to obtain.
Should we?
 
  
= Teaching Schedule =
+
===Computer Science MS===
 +
The Computer Science MS program is revised to add a concentration in Data Science and streamline one of the existing concentrations.
  
Note - this section is out of date and needs to be updated.
+
The new concentration in Data Science is composed of existing computer science and mathematics courses.  Currently these courses are the most popular electives taken by graduate students (both Computer Science MS students and graduate students from other departments).  Data Science is popular currently with both students and employers, and is likely to continue to be so in the future.
  
When these changes are in effect (2020-2021), the CS teaching schedule could be ...
+
The Professional Concentration is modified to require one of the data science courses, CS 501 Programming for Data Science, and to allow CS 601 Programming for Data Science II to count as an Interconnected Computing core course.
* 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 ...
+
The Bioinformatics Concentration is modified to allow CS 501 to count in place of CS 500 Fundamentals of Computing for that concentration.
* 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
+
The Academic Concentration is modified to (a) require students coming from outside of ISU to take CS 556 Systems Programming and CS 558 Algorithms, and (b) require CS 671 Operating Systems II and CS 658 Algorithms II.  CS 556 and CS 558 are foundational courses that lay the groundwork for CS 658 and CS 671.  The requirement to take the courses will have the curriculum match current advising.  The current concentration requires either CS 671 or another "systems II" course, and also requires either CS 658 or another "theory II" course.  The change will be to stipulate the "systems II" course as CS 671 and the "theory II" course as CS 658.  This also will align the curriculum with current advising practices.  The courses that previously could be used to count as "systems II" and "theory II" courses will continue to be offered as electives on a rotating basis (once every 2 years, depending on demand).

Latest revision as of 15:14, 20 January 2020

This page lists proposed changes for the CS BS and MS programs that are being put forward during the 2019-2020 academic year, with a goal to be in effect for the fall 2020 term. The point of contact for these changes is Jeff Kinne (jkinne@indstate.edu). Changes have been worked on by the CS regular faculty since the 2017-2018 academic year and result from program review, assessment results, and changes in the field (CS majors tend to go through moderate updates at least once every ten years). All changes were approved by unanimous votes at the department level (vote of all CS regular faculty).

Status as of January 20, 2020 - all changes are on track to be approved to start Fall 2020.

Attachments and Curriculog

Links to attachments that are included in curriculog for the updates to the BS and MS.

  • Degree maps / plans - BS and MS
  • Curriculum Maps - BS, MS
  • Outcomes Library - BS, MS
  • Assessment Plans - BS, MS
  • Meeting Minutes - CS faculty meeting minutes
  • Support from Impacted Units - email indicating support attached in curriculog, from - School of Criminology and Security Studies, AFIRM Department
  • Projected Teaching schedule - google doc
  • Links to curriculog for the proposals - Go to [1], click "All Proposals" near the top left, click "Advanced Filter" near the top, for "Found Under" select "Mathematics and Computer Science", click "Filter Proposals" button. This will show all proposals from Math & CS.

Note - CIP code for Computer Science is 11.0701. The major codes are 3060 for the CS MS and 3023 for the CS BS and minor.

Undergraduate - Updates Summary

Concentrations

  • Information Science Concentration - revised to be a bit "more applied" - removed some senior-level systems courses and added some lower level courses that will be shared with the Cybercriminology and Security Studies major.
  • Computing Science Concentration - will be able to focus a bit more on systems/theory as a result of changes to Information Science Concentration (senior-level systems/theory courses can go a bit deeper by only serving the Computing Science Concentration now).
  • Data Science Concentration - new concentration added.
  • Core - sequencing of the BS core shared by all concentrations has been tweaked.

Minors

  • Computer Science Teaching minor - new minor that could be an add-on minor to an education minor to prepare to become licensed in computer education. The minor consists of the new course CS 305 (see below) and existing courses CS 101 Fundamentals of Computing, CS 151 Intro to Computer Science, CS 260 Object Oriented Programming, and ECT 173 Fundamentals of Information Technology. (Mapping from courses to IN licensing exam)
  • CS Minor - updated based on updates to CS core courses.

Courses

  • Name change CS 201 Programming Structures (was Computer Science I), CS 202 Data Structures and Algorithms (was Computer Science II), CS 303 Discrete Structures and Computing Theory (was Discrete Structures), CS 351 Computer Organization (was CS 451 Computer Architecture), CS 457 Database Systems (was Data Base Processing), CS 499 Senior Design (was Senior Seminar)
  • # of credit hours CS 303 4 hours (was 3), CS 351 4 hours (was 3), CS 499 4 hours by taking it twice for 2 credits each (was 1)
  • Catalog description updated for many of the courses, as noted in a section below, also put in catalog description to describe the major and concentrations
  • Prerequisites CS 351 prereq is 201 (previously 202 and 303), CS 452 (no longer require senior standing - this course is no longer the culminating experience for the major)
  • Prerequisites Add CS 351 as a prereq to - CS 456. Add CS 303 as a prereq to - CS 456, CS 475. Add Math 132 as a prerequisite for - CS 458/558. Add CS 456 as a prereq to - CS 471, CS 473.
  • Prerequisites Replace CS 202 as a prereq with CS 201 for the following courses - CS 452, CS 457, CS 470, CS 499.
  • Required courses No longer required for the BS (to make room for increase # hours in key courses above) - CS 420 Theory of Computation, CS 421 Formal Methods, CS 452 Software Engineering. These will be taught out over the next few years to fill the needs of existing students and will be offered as electives thereafter (on a rotating basis).
  • Banking bank the following courses that the department is currently unable to offer given current staffing - CS 220 Java Programming, CS 463 Compilers

The following new courses are being proposed.

  • CS 305 Computer Science Teaching Methods (part of CS Teaching minor) model syllabus
  • CS 401 Programming for Data Science - undergraduate analog of existing CS 501, part of Data Science Concentration of BS. model syllabus
  • CS 417 Machine Learning - used in data science concentration. Note that a graduate 500 level version is not being proposed (an existing course CS 617 already fills the need at the graduate level). model syllabus
  • CS 456L, 457L, 458L, 401L - 1 credit lab sections to go along with key senior-level courses in each concentration. Note that graduate 500 level versions are not being proposed (the graduate students do not need the extra lab time). Model syllabi - CS401L, CS 456L, CS457L, CS458L

Graduate - Updates Summary

Concentrations

  • Computing Science Concentration - streamlined to focus on two key courses (CS 658 Algorithms II and CS 671 Operating Systems II) rather than allowing students to choose.
  • Data Science Concentration - new concentration added (note that most courses in the concentration are already being offered, and students will be able to switch to this concentration once it is official).
  • Professional and Bioinformatics Concentrations - modified to allow either CS 500 Programming Fundamentals or CS 501 Programming for Data Science as the foundational programming course, and allow CS 601 Programming for Data Science II to count as an Interconnected Computing core course in the Professional Concentration.

Courses

  • Name change CS 501 Programming for Data Science (was Programming for Data Science & Analytics I), CS 601 Programming for Data Science II (was Programming for Data Science and Analytics II)
  • Catalog description updated for many of the courses, as noted in a section below, and added catalog description for the major and concentrations
  • Prerequisites Add CS 351 as a prereq to - CS 556. Add CS 303 as a prereq to - CS 556, 575. Add Math 132 as a prerequisite for - CS 558. Add CS 556 as a prereq to - CS 571, CS 573.
  • Prerequisites Replace CS 202 as a prereq with CS 201 for the following courses - CS 552, CS 557, CS 570.
  • Prerequisites For CS 617, add a prerequisite of CS 401 or CS 501 or CS 457 or CS 557.
  • Banking bank the following courses that the department is currently unable to offer given current staffing - CS 563 Compilers

Accelerated 4+1

A new 4+1 accelerated BS+MS is being proposed, which would basically follow the rules imposed by university-wide guidelines and pair undergraduate concentrations with graduate concentrations (e.g., undergraduate Information Science naturally leads into the graduate Professional Concentration).

Note - still working on this proposal, may not be in effect for Fall 2020.

Undergraduate - Revised Programs

Undergraduate BS Major

Below is a summary of the revised CS BS program - with courses required of all concentrations on the left, and the three concentrations listed in the remaining columns. Credit hours and prereqs in parenthesis.

All (25) CS (26) IS (25) DS (26)

Stats - Math 241 or 341 (3)
151 Intro to CS (3)
201 Programming Structures (4 | 151)
303 Discrete Struct and Comput Theory (4 | 201)
351 Intro Systems (4 | 201)
470 PL (3 | 201)
499 Senior Design (4 | 303, 351)

Math 131, 132 Calc I, II (8)
202 Data Struct and Alg (4 | 201)
458 Algorithms (3 | 202, 303, Math 132), 458L (1)
456 Systems (3 | 202, 303, 351), 456L (1)
471 Op Sys (3 | 456)
473 Networking (3 | 456)

101 Fundamentals of Computing (3)
CSS 210 Intro to Net (3 | 101 or 151)
CSS 211 Intro to Sec (3 | 101 or 151)
CSS 331 Files and DB (3 | 101 or 151)
170 Web Prog I (3 | 151)
457 DB (3 | 303, 201), 457L (1)
469 Unix/Linux Adm/Net (3 | 201)
479 Web Prog II (3 | 201, 170)

Math 131, 132 Calc I, II (8)
202 Data Struct & Alg (4 | 201)
401 Prog for DS (3 | 202, 303, Math 132), 401L (1)
417 Machine Learning (3 | 401)
457 DB (3 | 303, 201), 457L (1)
475 AI (3 | 303, 202)

Culminating Exam - must be passed before graduating, students who have not passed it will be given an incomplete for their culminating experience until passed. Sample exam and grading rubric is provided at the beginning of each term, exam is given at least twice per term (once during the first half of the term and once during the second half of the term). Note - this exam will continue to be managed as part of CS 202 and 499.

Changes The following are the main changes from the the current major

  • New concentration - Data Science.
  • Newly required - statistics - MATH 241 or MATH 341
  • CS 499 - now 4 credits (was 1), name changed (was "Senior Seminar"), will include major programming project
  • Now only required for Computing Science Concentration - CS 202, 456, 471.
  • Now required for Computing Science Concentration instead of Information Science Concentration - CS 473.
  • Newly required for Information Science Concentration - CS 101, CSS 210, CSS 211, CSS 331.
  • CS 451 changed number to CS 351 and retitled (had been "Computer Architecture"), CS 201 and 202 names changed (had been "Computer Science I" and "Computer Science II").
  • 1 credit lab added to CS 456, 457, and 458. CS 303 made 4 credit hours, was 3.
  • No longer required - CS 452 Software Engineering, CS 420 Theory of Computation, CS 421 Formal Methods

Minor

Note - number of credit hours for courses are in parenthesis.

  • Computer Science Minor - modified to consist of - CS 151 (3), 201 (4), 351 (4), 4 hours of electives. This update preserves the requirement that a CS minor takes the "core" of the CS major that is required for most upper level CS courses. Previously, the minor was - CS 151 (3), CS 201 (4), CS 202 (4), 9 credits of CS electives with at least 6 at the upper division level.

Graduate - Revised Programs

The changes being proposed from the current MS are as follows.

  • Courses required for all concentrations - unchanged
  • Bioinformatics concentration - allow either CS 500 or CS 501 (can count CS 501 in place of CS 500)
  • Professional concentration - also require CS 501 Programming for Data Science
  • Academic Concentration - CS 658 Algorithms II, CS 558 Algorithms if not taken at ISU, CS 671 Operating Systems II, CS 556 Systems Programming if not taken at ISU.
  • Data Science Concentration - new concentration, see below.
  • Accelerated MS - 4+1 BS+MS. Common components of all 4+1 programs - student must have at least 3.0 GPA and have completed at least 80% of credits by start of fourth year, can take up to 9 500 level credits as senior and have count for both BS and MS, can take up to 6 600 level credits as senior which do not count for BS or towards 120 credits or for full time status for financial aid. Specific to CS 4+1 - approved to take any 500/600 level CS for which students have met prereqs, a 4+1 degree map for each concentration is attached. The university-wide policies are - policies. An example program is - accelerated Math MS. Note - still being worked on, may not be ready for fall 2020.

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, 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 201 Programming Structures, MATH 131/132 Calculus I/II, MATH 313 Elementary Linear Algebra.

Curriculum

  • CS 501 Programming for Data Science (3) (if 401 not taken as undergrad)
  • CS 557 Database Systems (3) (if 457 not taken as undergrad)
  • CS 575 Artificial Intelligence (3) (if 475 not taken as undergrad)
  • CS 601 Programming for Data Science II (3)
  • CS 617 Databases, Data Mining, and Big Data (3)
  • MATH 503 Linear Algebra and Modeling for Data Science (3)
  • MATH 540 Statistics for Data Science (3)
  • Electives and culminating experience approved by the advisor to complete student's plan of study and at least 17 credits of 600 level coursework

Course Descriptions

Note - all courses required in the BS and MS programs are listed here. For courses where the catalog description is being updated, the course is marked with ++ (so use Find in your browser and search for ++ to see those courses). Courses where a name/#hours/course# change is being made are listed as the proposed name/#hours/course# but are marked with **; the original name/#hours/course# for these courses are listed above under "Courses".

BS Major Courses - All Concentrations

  • CS 151 Intro to CS - ++ Core concepts that are foundational in computer science including - programming, use of computers for dealing with files and programs, how data is stored, number systems. Focus on building skills needed for programming and further study in computer science, and intermediate mastery of a particular programming language. Previous description - History of computers and computer science, principles of process description, and problem analysis. The basic structures of sequence, iteration, and selection. Programming style, artificial intelligence, current applications.
  • CS 201 Programming Structures ** (4) - ++ This course is a continuation of CS-151. Advanced programming structures, patterns, and concepts such as classes, classical inheritance, functional programming, singletons, generators, data structures, sorting algorithms, and other design patterns. Previous Description - This course begins with a history of programming languages, then focuses on programming in a particular language. The following topics are covered in some detail: variables, expressions and operators, control structures, simple data types, arrays, classes, and objects. Algorithm design and security issues are also discussed.
  • CS 303 Discrete Structures and Computing Theory ** (4) - ++ Mathematics content that is foundational to and useful for computer science. Topics include axioms and proofs, induction, graph theory, probability, finite automata, regular expressions, Turing machines, and the Church-Turing thesis. Previous description - This course is an introduction to discrete mathematics for computer science. The course covers the basic topics from set theory (including functions and relations), logic, number theory, counting, graph theory, and discrete probability. It involves a detailed study of proof techniques.
  • CS 351 Computer Organization ** (4) - ++ This course examines in some detail how a computer works. To prepare for this study, students will learn the basics of binary arithmetic, data representation, along with propositional and predicate logic. The major hardware components of a computer, including processors (CPUs), memory (RAM), storage and other peripheral devices will be examined in some detail. Computer software will also be studied. The process of program translation and execution will be outlined. Students will learn machine language and learn to write and run simple assembly language programs. Operating system functions and the organization of file systems will be studied.
  • CS 470/570 Programming Languages - ++ An introduction to programming in a wide variety of programming languages and paradigms. Paradigms include: imperative/procedural, object-oriented, functional, logic, concurrent. A focus is placed on obtaining proficiency in many languages. Also considered are the syntax and semantics of programming languages. Previous description - The purpose of the course is to develop an understanding of the organization of programming languages and introduce the formal study of programming language specification and analysis. Topics covered usually include: language definition structure, data types and structures, control structures and data flow, run-time consideration, interpretative languages, lexical analysis, and parsing.
  • CS 499 Senior Design ** (2+2) - ++ The senior design is a two semester sequence. Students enroll during their last two terms. Students complete an independent project involving the entire development cycle - requirements/needs analysis, prototyping, testing, deployment, maintenance. Students also prepare for the process of applying for and interviewing for jobs or a graduate program. Previous description - The senior seminar is taken by students in their last year. The course prepares students for the process of applying for and interviewing for jobs or a graduate program. Students also present on current topics in computer science.

BS Major Courses - Computing Science

  • CS 202 Data Structures and Algorithms** (4) - ++ This course is a continuation of CS 201. It involves a deeper study of algorithm design and analysis and data structures. Students are able to choose the best data structures and algorithms to solve a problem and implement the solution in code. Students also practice programming in a variety of settings, which may include - parallel programming, network programming, graphics, security, and data science. Previous description - This course is a continuation of CS 201. It involves a deeper study of programming languages, but emphasizes programming in a particular language. Topics include algorithm design and analysis, data structures, recursion, threads, network programming, graphics, security, and ethics.
  • CS 456 (3) / 556 (3) Systems Programming - An introduction to both program translation and operating systems. There will be a survey of topics such as: top-down and bottom-up parsing, scanning, code generation, symbol table management, linkers and loaders, batch processing systems, interacting processes, multiprogramming systems, and memory management.
  • CS 456L (1) Systems Programming Laboratory - A series of programming exercises and laboratory work to support CS 456.
  • CS 458 (3) / 558 Algorithms (3) - Among the topics covered are: review of basic data structures and their implementations; graphs, both directed and undirected; analysis of algorithms; sorting, searching, and merging, both internal and external methods; memory management algorithms; mathematical algorithms; and, as time allows, advanced topics such as NP-complete problems.
  • CS 458L (1) Algorithms Laboratory - A series of programming exercises and laboratory work to support CS 458.
  • CS 471/571 OS - ++ This class introduces the basic functionality provided by computer operating systems, and covers three main topics. The first topic is memory management; specifically dynamic memory allocation, dynamic address translation, virtual memory, and demand paging. The second topic concerns processor management and concurrency; how do we manage multiple tasks that execute at the same time and share resources. Subtopics in this section include processes and threads, context switching, synchronization, scheduling, and deadlock. The third topic concerns file systems and storage management; the organization and operation of an example file system will be discussed in detail. Previous description - Major topics include system structure, memory management, and process management. Hands-on experience using the department’s minicomputer facilities are an important part of the course.
  • CS 473/573 Networking - The course is an introduction to networking and includes detailed study of Internet protocols and socket programming. Topics include a study of IP, UDP, and TCP protocols, as well as application layer protocols such as HTTP and SMTP. Students learn to program both a client and server.

BS Major Courses - Data Science

  • CS 202 Data Structures (4) - see under Computing Science Concentration
  • CS 401 (3) / 501 (3) Programming for Data Science ** - Intensive programming course with a focus on solving problems in data science, specifically focusing on big data and dealing with different data formats. Students are introduced to data mining and machine learning algorithms with a focus on being able to use programming packages. Data mining and machine learning focus on algorithms that automate the process of discovering patterns in, and devising models for, large datasets. Previous description - Thorough programming course with a focus on solving problems in data science and analytics, specifically focusing on big data and dealing with different data formats.
  • CS 401L (1) Programming for Data Science Laboratory ** - A series of programming exercises and laboratory work to support CS 401.
  • CS 417 Machine Learning (3) ** - ++ A continuation of CS 401. A thorough study of data mining and machine learning algorithms, the overall process and the main techniques used in data mining and machine learning, including exploratory data analysis, predictive modeling, descriptive modeling, and model evaluation.
  • CS 457 (3) / 557 (3) Database Systems - see under Information Science Concentration
  • CS 457L (1) Database Systems Laboratory - see under Information Science Concentration
  • CS 475/575 Artificial Intelligence - Concepts and applications, including artificial intelligence programming languages, history, present and future development and research, expert systems, natural language processing, intelligent machines/robots, and vision. Development of artificial intelligence course project.

BS Major Courses - Information Science

  • CS 101 Fundamentals of Computing - The main focus of the course is to give students a practical understanding of computing to become well-informed citizens and professionals in the computing age. Topics may include a basic study of - computational thinking, computer security, big data, artificial intelligence, and current trends in computing.
  • CSS 210 Intro Networking - ++ Topics include network types and communication models, hardware components, applications, protocols, standards, internetworking and routing concepts, OSI Model, TCP/IP, LAN, WAN networking technologies, Add also - computer networks and the internet, application layer, transport layer, network layer, link layer, wireless and mobile networks, security in computer networks.
  • CSS 211 Intro Security - ++ This course focuses on the foundation for the study of computer system security. The course centers around the domains comprising the information security common body of knowledge. Students will learn the security management practices as well as security architecture and models, security laws, and investigations. Add also - Specific topics may include authentication, access control, cryptography, programs and programming, the web, operating systems, networks, databases, cloud computing, privacy, management and incidents, legal issues and ethics, emerging topics.
  • CSS 331 Files and Databases - ++ This course introduces the concepts and tools surrounding persistent data storage. It covers the physical construction of storage devices, the implementation of file-systems and files, and database design and terminology with an emphasis on implementation in the real world. Previous Description - This course introduces the basic database concepts. The course stresses the implementation of databases in the real world. Students learn about basic database design and terminology, and learn how to create a variety of databases using MS Access.
  • CS 170 Web Programming - ++ An introduction to web programming methods and languages. Includes an introduction to the standard HTML/CSS/JavaScript triumvirate of languages for client-side web page development. May also include an introduction to web servers, web applications, web API's and back-end systems, as well as topics covering current trends in the field. Previous Description - An introduction to World Wide Web programming methods and scripting languages. Includes Hypertext Markup Language (HTML), Cascading Style Sheets (CSS), Dynamic Hypertext Markup Language (DHTML), JavaScript, and VBScript.
  • CS 457 (3) / 557 ** (3) Database Systems - ++ The course will provide an introduction to the use of data management systems for applications, an understanding of how such systems function, and the advantages and disadvantages of various types of database systems. The first part of the course will deal with the relational model, and will include an introduction to Relational Algebra and SQL. NoSQL database systems will also be studied. Topical examples will include key-store, document, graph, and other categories of database management systems. The underlying data structures and algorithms that support database systems will also be reviewed. Previous description - Data independence, relational model, relational algebra and calculus, query languages and SQL, conceptual modeling, database design, data dependencies and normalization, access methods, tables, queries, forms, macros and reports, database administration, introduction to transaction processing, concurrent transactions, and recovery. Case studies of commercial database systems such as Oracle and Microsoft SQL Server.
  • CS 457L (1) ** Database Systems Laboratory - A series of programming exercises and laboratory work to support CS 457.
  • CS 469/569 Unix/Linux Admin & Networking - Includes installation and configuration of Unix/Linux operating system software; set-up of hardware and software for Unix/Linux networking including TCP/IP, FTP, Telnet, DNS, DHCP, and Apache; Unix/Linux administration tasks including directories, users, tuning, backup, security, and networking.
  • CS 479/579 Web Prog II - Advanced programming for the World Wide Web and the Internet. This course includes three approaches: the older CGI/PERL, Microsoft’s Active Server Pages (ASP), and Sun’s Java Server Pages (JSP). The course also includes the setup and configuration of World Wide Web servers including Apache and Microsoft’s IIS.

BS Service Courses - Required in Other Majors

  • CS 256 Principles of Structured Design - IT major - An introduction to structured programming and top-down design; applications to a wide variety of practical programming problems.
  • CS 260 Object Oriented Programming - some tech majors - Object oriented programming concepts and methods. Includes encapsulation, data abstraction, class development, instantiation, constructors, destructors, inheritance, overloading, polymorphism, libraries, and packages.

BS Elective Courses - Not Required in Any Concentration

The following are required in the current CS BS and no longer will be under the proposal (CS 420 and 421 are/were only required in the Computing Science Concentration).

  • CS 420/520 Theory of Computation - teach out - A sampling of the different areas of theoretical computer science: finite state concepts, formal grammars and automata, computability, Turing machines, and program verification.
  • CS 421/521 Formal Methods - teach out - Elements of formal logic; various approaches to automation including resolution; restrictions and search methods; inductive theorem-proving; Knuth-Bendix completion; Boyer-Moore theorem-prover; applications.
  • CS 452/552 Software Engineering - teach out - ++ This course studies the software life cycle: specification, object-oriented programming and design, program development, validation, testing, debugging, documentation, maintenance, revision control, CASE tools. Remove the following from the description - The course serves as a culminating experience in the CS major. Students complete a significant software project during the course that ties together much of what has been learned in other CS courses. Students give a presentation describing and demonstrating their project; these presentations are open to the rest of the department.

CS Teaching Minor

  • CS 101 Fundamentals of Computing (3) - see under Information Science Concentration.
  • CS 151 Introduction to Computer Science (3) - see under BS required courses.
  • CS 260 Object Oriented Programming (3) - Object oriented programming concepts and methods. Includes encapsulation, data abstraction, class development, instantiation, constructors, destructors, inheritance, overloading, polymorphism, libraries, and packages.
  • ECT 173 Fundamentals of Information Technology (3) - This is a survey course of the Information Technology (IT) industry, and an overview of IT as a discipline. Presented as a variety of concepts and topics utilized by IT professionals including: the role of IT in organizations, hardware, software, data organization, decision support, e-commerce, telecommunications and networking, the Internet and intranets, artificial intelligence, system development, and security and ethical issues.
  • CS 305 Computer Science Teaching Methods (3) The methods, materials, and applications of teaching computer science in elementary, middle, and high schools. Computer science education is explored as it relates to National K-12 and Indiana state standards. Various components including computing systems, networks, data, algorithms and programming, and digital citizenship are examined along with expectations from licensing and certifying agencies.

MS Major Courses - Required of All Concentrations

  • CS 685 Software Project (3-6) - The total development of an advanced software project in areas such as artificial intelligence, expert systems, data bases, data communications, operating systems, compilers, assemblers, coding theory, graph theory, word processors, and editors.
  • CS 695 Computer Science Research (3-6) - Research studies in computer science.
  • CS 699 Computer Science Internship (0-3) - Coordinated computer science work experience in business/industry or equivalent project work within the department. A comprehensive written report of the experience, including documented samples of software developed by the student, is required.

MS Major Courses - Academic Concentration

  • CS 658 Algorithms II - ++ A continuation of CS 458/558. A complete study of algorithm design techniques, including dynamic programming, greedy algorithms, divide and conquer, network flow, linear programming. Students are able to use these techniques to design algorithms for new computational tasks, including proving the running time and correctness of the algorithms. The course also focuses on NP-complete problems and techniques and analysis for handling computationally hard problems, including approximation algorithms and fixed-parameter algorithms. Previous description - Recurrences, probabilistic analysis, randomized algorithms, red-black trees, amortized analysis, Fibonacci heap, disjoint set union, the all pairs shortest path problem, and maximum flow.
  • CS 671 Operating Systems II - ++ A continuation of CS 471/571. A continued look at how operating systems manage the three key resources that must be shared in computing environments - processing, memory, and long-term storage - including the system code itself and tradeoffs between different strategies. A significant programming project is completed, for example writing system modules for a modern operating system environment. The key OS concepts are applied to various settings, including computing clusters, cloud environments, and security considerations. Previous description - Understand and use the basic concepts of operating systems. Introduction of processes such as the processing unit, process management, concurrency, communication, memory management and protection, and file systems. Prereq updated to be - C or better in CS 456, CS 471, CS 556, or CS 571.

MS Major Courses - Bioinformatics Concentration

  • CS 500 Programming Fundamentals - see under Professional Concentration.
  • CS 501 Programming for Data Science I - see CS 401 under BS (grad section entails some additional work but the same basic description).
  • CS 600 Concrete Mathematics - see under Professional Concentration.
  • CS 557 Database Systems - see CS 457 under BS (grad section entails some additional work but the same basic description).
  • CS 617 Databases, Data Mining, and Big Data - see under Data Science Concentration.
  • CS 618 Computational Biology - An introduction to computational biology. Topics may include principles and methods used for sequence alignment, motif finding, structural modeling, structure prediction and network modeling, as well as currently emerging research areas. A focus is placed on the computational cost of solving problems ­ in terms of CPU time, memory, and disk space. Study of the core algorithms used to solve problems.

MS Major Courses - Data Science Concentration

  • CS 501 Programming for Data Science I - see CS 401 under BS (grad section entails some additional work but the same basic description).
  • CS 557 Database Systems - see CS 457 under BS (grad section entails some additional work but the same basic description).
  • CS 575 Artificial Intelligence - see CS 475 under BS (grad section entails some additional work but the same basic description).
  • CS 601 Programming for Data Science II - A second course in programming related to data science and analytics. Ability to handle data in non-standard formats, utilize cloud/cluster for computationally intensive analysis/simulation, and produce interactive interfaces to data and results. Use of machine learning tools.
  • CS 617 DB, Data Mining, and Big Data - Introduction to using relational databases to accomplish common data storage and analysis needs. The techniques and tools available to deal with data that is too large to store in a database running on a single server. Topics may include data warehousing, map reduce, association rules, machine learning, and streaming algorithms.

MS Major Courses - Professional Concentration

  • CS 500 Programming Fundamentals - Review of undergraduate topics in Computer Science including Data Structures, Computer Architecture, and Computer Organization. Review of a computer programming language that students can expect to use in advanced courses.
  • CS 600 Concerete Mathematics - An introduction to discrete mathematics for computer science graduate students. Students gain the skills needed to model problems abstractly, analyze solutions, and prove program correctness and efficiency. Typical topics include logic, induction, basic combinatorics, discrete probability, graph theory, and asymptotic growth of functions.
  • CS 602 Mobile and Cloud Computing - The course deals with development and design of applications and systems for mobile and cloud computing. Challenges inherent to mobile and cloud computing are studied, such as security, consistency, fault­tolerance, useability, and efficiency in mobile and cloud settings. Students are exposed to development on mobile devices and writing software for cloud computing.
  • CS 603 Networking and Security - Introduction to the architecture and protocol of the internet and other networks, including networking configuration and management. Security considerations in networking and in general, including the types of exploits that are possible and how to mitigate risk.
  • CS 609 Web Programming and Applications - An introduction to development and administration related to the web. Topics may include software design, client-side and server-side development, web applications, data management, and security.
  • CS 610 Survey of Programming Languages - ++ A study of programming in a wide variety of programming languages and paradigms. Paradigms include: imperative/procedural, object-oriented, functional, logic, and scripting. A focus is placed on obtaining proficiency in many languages. A second focus is on understanding language theory, design choices, and implementation. Previous description - An introduction to programming in a wide variety of programming languages and paradigms. Paradigms include: imperative/procedural, object-oriented, functional, logic, and scripting. A focus is placed on obtaining basic proficiency in many languages. A second focus is on understanding language theory, design choices, and implementation.
  • CS 611 Software Spec and Design - Approaches to software specification and development, such as Z and VDM. The course also explores the use of software tools available for use with software specification and development methods.
  • CS 617 Databases, Data Mining, and Big Data - see under Data Science Concentration.
  • CS 618 Computational Biology - see under Bioinformatics Concentration.
  • CS 619 Trends in CS - A seminar on the current topics within computer science that are both new and of high interest within the research community and/or industry. Exposure to the latest technologies is provided.

MS Elective Courses - Not Required in Any Concentration

  • CS 620 Theory of Comp II - Turing machines, the Church-Turing thesis, decidability, the halting problem, reducibility, recursive function theory, the recursion theorem, time and space complexity, classes P and NP, NP-completeness.
  • CS 621 Discrete Struct II - Symmetry and counting, automorphism groups of combinatorial structures, finite fields and applications, error correcting codes, and generating functions.
  • CS 652 Soft Eng II - Topics covered include design patterns, aspect-oriented application development, business rule approach to application development, XML processing and applications, refactoring, clean room techniques, and domain driven design.
  • CS 670 Concurrent Programming - Fundamental concepts are covered including concurrency, synchronization, safety and liveness, fairness, axioms and inference rules. Concurrent execution with shared variables, semaphores of, critical regions, monitors; concurrent execution using message passing: asynchronous and synchronous message passing; concurrent programming languages and environments.
  • CS 673 Networking II - Topics include internetworking philosophies, unicast and multicast routing, congestion control, network quality of service, mobile networking, router architectures, network-aware applications, content dissemination systems, network security, and performance issues. Material for the course will be drawn from research papers, industry white papers, and Internet RFCs.

Curriculog Text

Courses

Catalog description - The following text is used for Justification in curriculog for courses that are only having their catalog description updated - "Catalog description is being updated. This is a minor change. Note that the CS BS and MS programs are also being updated this academic year. This course is a required course in the BS/MS. To see a summary of the rest of the CS curriculum updates being proposed, see https://cs.indstate.edu/wiki/index.php/CS_Curriculum_Revisions_2019-2020".

Prerequisites - For courses that are having prerequisites updated, the following is included in the Justification - "Prerequisites for this course are being updated based on updates to the CS BS/MS. Prerequisite is being updated to - BLANK; previously the prerequisites were BLANK."

Name change - For courses that are having their name changed, the following is included in the Justification - "The name of this course is being updated (previously was BLANK) to more accurately reflect the current content of the course and its place within the BS/MS programs."

Credit hours change - For courses that are having their # credit hours updated, including the following in the Justification - "The # of credit hours is being updated (will be BLANK, previously was BLANK). The previous # of credit hours was not sufficient to adequately meet all of the learning outcomes that are desired for this course."

Lab courses - For new lab courses, or for courses matched with new lab courses, put the following in the Justification - "Note that a lab course is also being added, BLANK that is 1 credit and will give the students more time to work on programs under instructor guidance."

Impact and Notification - Where appropriate, included the following in the Impact and Notify other Departments fields. Impact - "COURSE is required in the MAJOR major and is an option in the MAJOR major. This is a minor update to the catalog description to reflect how the course is being taught." Notification - "The DEPARTMENT(S) has (have) been notified of the update."

Prerequisite - For courses that will not require CS 201 in place of CS 202 (because CS 202 is no longer required of all concentrations), include in the Justification - "Replacing prerequisite of CS 202 with CS 201 because CS 202 will no longer be required for all concentrations in the CS BS.".

Programs

Computer Science BS

The proposal is a revision of the Computer Science BS including an addition of a new concentration in Data Science. The CS faculty have been working on the proposals for the past two academic years. The revision is a result of looking at program assessment, discussions among faculty about how to best prepare students for upper level courses, and feedback from alumni on current industry demand. All of the proposals received a unanimous vote at the department level (all CS regular faculty).

The following are the main aspects of the revision -

  1. Core of the major that is required for all majors has been reworked.
    1. The main sequence was currently CS 151 Intro to CS, 201 Computer Science I, 202 Computer Science II. It will now be CS 151, 201, 351 Computer Organization. CS 201 and 202 are being renamed to CS 201 Programming Structures and CS 202 Data Structures and Algorithms to better reflect the content of the courses. We replace CS 202 with CS 351 Computer Organization in the core. This will give students better mastery of computer organization going into the rest of the courses in the major. We have identified this need based on students' knowledge and skillset coming in to the upper level CS courses. A statistics course will also be required for all concentrations. This will firm up the mathematical foundations for the students.
    2. The core of courses required of all concentrations has been reduced. Some courses are now only required in the Computing Science Concentration (CS 202 Data Structures and Algorithms, CS 456 Systems Programming, CS 471 Operating Systems). One course is no longer required of any concentrations (CS 420 Theory of Computation). Additional courses are being added to the Information Science Concentration - CS 101 Fundamentals of Computing, CSS 210 Intro to Networking, CSS 211 Intro to Security, CSS 331 Files and Databases. This gets the students in the concentration into these application areas sooner, and also increases the cross-over between the Cyber and Security Studies major and this concentration in the CS major (these are all options in the CSS major).
    3. The culminating experience CS 499 is being renamed from "Senior Seminar" to "Senior Design" and will be taken as a year-long sequence with 2 credits per semester (was currently 1 credit in 1 semester). In addition to the career readiness outcomes currently in CS 499, a yearlong project will be completed.
  2. Lab sections for key senior level courses are being created and required (for CS 456 Systems Programming, CS 457 Database Systems, CS 458 Algorithms, CS 401 Programming for Data Science). Two other key courses will be 4 credit hours (CS 303 Discrete Structures and Computing Theory, CS 351 Computer Organization) to give students more time guided by instructors to work on programming exercises.
  3. New concentration in Data Science. Data Science is very popular right now, with students and parents asking if we offer the major. The proposed Data Science Concentration is from existing courses and two newly proposed courses. The Data Science offering at the MS level are currently the most popular courses. We expect the BS Data Science courses to be popular as well. Having Data Science programs has potential to positively impact enrollment.
  4. Catalog descriptions and names - catalog descriptions and names of some courses are being updated. Most courses have not been updated in at least 10 years, and the updated descriptions are minor updates based on how the courses are currently being taught.

Note that the total # of credit hours in the major has stayed the same (currently 51-53 credit hours, will be 50-51 credit hours).

A draft teaching schedule has been created that would allow courses from the current version of the major and the new version of the major to both be offered over the next few years with current staffing.

Note that a complete list of all curriculum changes is at https://cs.indstate.edu/wiki/index.php?title=CS_Curriculum_Revisions_2019-2020.

All units impacted by any of the CS courses have been notified.

  • The IT major from the ECET major requires CS 151 Intro to CS, CS 256 Structured Design, and CS 170 Web Programming I. CS 151 and CS 170 will see minor updates to their catalog description, and no significant changes.
  • The MIS minor in the MIS&BE department and the IRM minor in the AFIRM department have CS 101 Fundamentals of Computing as an option in the minors. There is only a minor change in the catalog description.
  • The MIS major has CS 452 Software Engineering as an option in the major. CS 452 will no longer be required; it will be offered the next few years for current CS students and may not be offered every year after that.
  • The CSS major in the School of Criminology and Security Studies requires courses CS 101, CSS 210, CSS 211, CSS 331 that will be used as part of the Information Science Concentration. The School has indicated its support of the proposals (email confirmation in the file attachments).
  • AFIRM offers a minor in Business Analytics. Business Analytics and Data Science are sufficiently different that we believe both programs should be offered by the university, and normally will be serving different populations of students. AFIRM has indicated that the changes to not impact their programs (confirmation in file attachments).

We have not received any feedback from ECET or MIS&BE.

Computer Science Minor

The current CS minor requires the "core sequence" - CS 151 Intro to CS, CS 201 Computer Science I, 202 Computer Science II -which is required of upper-level CS courses in addition to 9 CS electives with at least 6 at the upper level.

Note that CS 201 and 202 are being renamed - CS 201 Programming Structures, CS 202 Data Structures and Algorithms. These names give a better reflection of the content in the courses than simply "Computer Science I" and "Computer Science II".

The minor is being revised based on revisions to the CS major. The new core sequence to the CS major will be CS 151 Intro to CS (3 credits), 201 Programming Structures (4 credits), 351 Computer Organization (4 credits). The revised minor will require CS 151, CS 201, CS 351, and 4 hours of electives. The number of credits required is being reduced from 20 to 15 to allow more students to fit the minor in to their schedules.

To see a summary of all CS curriculum updates this year, see https://cs.indstate.edu/wiki/index.php/CS_Curriculum_Revisions_2019-2020

The students who most commonly minor in CS are majors in IT, Mathematics, and Physics. ECET and Chemistry & Physics have been notified of the proposed changes. The number of credits needed by these majors to complete the CS minor will go down due to the reduction from 20 credits to 15. We expect that most CS minors will still choose to complete additional CS coursework above 15 hours.

Computer Science Teaching Minor

A new minor in Computer Science Teaching is proposed. The minor focuses on (a) CS skills necessary to teach courses that are licensed in Indiana by the Computer Educator license, (b) methods in CS teaching. Given the wide array of courses that Computer Educator licenses (at the high school level - networking, database, programming, cybersecurity, AP computer science, ...) the largest focus is on CS content. Existing CS and ECT courses have been chosen to align with the Indiana state standards for Computer Educator. A single new CS teaching methods course (CS 305 Computer Science Teaching Methods) gives students experience in designing lesson plans in CS, assessing student work, etc.

An ISU student would only obtain the Computer Educator license if they major in an education major and minor in Computer Science Teaching.

The minor is being proposed in part due to (a) a continuing lack of qualified teachers to teach CS in K-12, and (b) a focus by the state of Indiana on improving CS teaching in K-12 and curriculum. The CS Teaching Minor could be attractive to either (a) education majors in STEM areas (e.g., mathematics, science), or (b) education majors for which teaching positions are particularly difficult to obtain.

Computer Science MS

The Computer Science MS program is revised to add a concentration in Data Science and streamline one of the existing concentrations.

The new concentration in Data Science is composed of existing computer science and mathematics courses. Currently these courses are the most popular electives taken by graduate students (both Computer Science MS students and graduate students from other departments). Data Science is popular currently with both students and employers, and is likely to continue to be so in the future.

The Professional Concentration is modified to require one of the data science courses, CS 501 Programming for Data Science, and to allow CS 601 Programming for Data Science II to count as an Interconnected Computing core course.

The Bioinformatics Concentration is modified to allow CS 501 to count in place of CS 500 Fundamentals of Computing for that concentration.

The Academic Concentration is modified to (a) require students coming from outside of ISU to take CS 556 Systems Programming and CS 558 Algorithms, and (b) require CS 671 Operating Systems II and CS 658 Algorithms II. CS 556 and CS 558 are foundational courses that lay the groundwork for CS 658 and CS 671. The requirement to take the courses will have the curriculum match current advising. The current concentration requires either CS 671 or another "systems II" course, and also requires either CS 658 or another "theory II" course. The change will be to stipulate the "systems II" course as CS 671 and the "theory II" course as CS 658. This also will align the curriculum with current advising practices. The courses that previously could be used to count as "systems II" and "theory II" courses will continue to be offered as electives on a rotating basis (once every 2 years, depending on demand).