CS 500 Spring 2023 and CS 500 Spring 2025: Difference between pages

From Computer Science at Indiana State University
(Difference between pages)
Jump to navigation Jump to search
m 1 revision imported
 
wiki_previous>Jkinne
Created page with "CS 500 Fundamentals of Programming is taken by CS MS students during their first term in the MS program. The main outcomes of the course are proficiency in C programming and d..."
 
Line 1: Line 1:
CS 500 Fundamentals of Programming is taken by CS MS students during their first term in the MS program. The main outcomes of the course are proficiency in C programming and data structures and algorithms.  
CS 500 Fundamentals of Programming is taken by CS MS students during their first term in the MS program. The main outcomes of the course are proficiency in C programming and data structures and algorithms.  


It is assumed that students starting the course have passed the CS MS admissions process (see [[Graduate Admissions Interview]], in particular those taking the course should be proficient in some programming language). Those who are looking for an introductory programming course should consider [[CS 510]] instead.
It is assumed that students starting the course have passed the CS MS admissions process (see [[Graduate Admissions Interview]], in particular those taking the course should be proficient in some programming language).  


This page contains the syllabus for CS 500 and is used to keep track of assignments, etc. as well for the most recent offering (spring 2023).
This page contains the syllabus for CS 500 for spring 2025. Previous terms - [[CS 500 Fall 2024]], [[CS 500 Spring 2024]], [[CS 500 Fall 2023]], [[CS 500 Spring 2023]], [[CS 500 Fall 2022]].


=General Information=
=General Information=
Line 10: Line 10:
'''Your Instructor'''
'''Your Instructor'''


[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br>
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@indstate.edu jkinne@indstate.edu] <br>
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br>
''Office:'' Myers Technology Center (TC) 301D and in Microsoft Teams, phone 812-237-3394 <br>
''Instructor Office Hours:'' TR 9am-noon, MWF 2-3pm
''Instructor Office Hours:'' MWF 8-9am, 2-3pm, TR 10am-2pm<br>
''Meeting:'' https://cs.indstate.edu/jkinne-meeting
 
'''Graduate assistant help''' - Isaiah Bartlett supports this course. You can email him or set up an appointment - see https://cs.indstate.edu/wiki/index.php/ISU_CS_People#CS_Departmental_Graduate_Assistants


'''Lecture, Exam'''
'''Lecture, Exam'''


''Lecture:'' MWF 11-11:50am in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br>  
''Lecture:'' MWF 11-11:50am, in Myers Technology Center (TC) 307 and over Zoom (link in Canvas, see below), and recorded<br>  
''Mid-term exam:'' TBA <br>  
''Mid-term exam:'' Wednesday Mar 5, 10-10:50am<br>  
''Final exam:'' Friday, May 5 10-11:50am <br>  
''Final exam:'' Friday May 9, 10am-11:50am <br>  
''Asynchronous students:'' For students who will be mostly participating asynchronously even though the course is being offered synchronously, it is best if you are able to watch the most recent lecture ''before'' the next one occurs. You should make note of any questions or comments and send them to me by email or Teams. I will start the next lecture by answering any questions/comments that came via email or Teams.


'''Prerequisites''' - admission to the CS MS program or approval of instructor, should be a competent programmer in some programming language.
'''Prerequisites''' - admission to the CS MS program or approval of instructor, should be a competent programmer in some programming language. See section below on CS 500 versus CS 510 for helping to decide if you are ready to take this course, and you can contact the instructor as well.


'''CRN numbers''' - 11401 for the 001 face to face section, 12108 for the 301 online section
'''CRN numbers''' - 10993 for the 001 face to face section, 11384 for the 301 online section


'''Required text'''
'''Required text'''
* We will use the following free online sources.
We will use the following free online sources.
* For C programming - '''[http://cslibrary.stanford.edu/101/EssentialC.pdf Essential C]''' by Nick Parlante, [https://en.cppreference.com/w/c C Reference] at cppreference.com
* For C programming - '''[http://cslibrary.stanford.edu/101/EssentialC.pdf Essential C]''' by Nick Parlante, https://cplusplus.com/. For an easier introduction, see [https://www.w3schools.com/c/c_getstarted.php w3schools].
* For data structures and algorithms - '''[https://opendatastructures.org/ Open Data Stuctures]''' by Pat Morin, [http://jeffe.cs.illinois.edu/teaching/algorithms/ Algorithms] by Jeff Erickson
* For data structures and algorithms - '''[https://opendatastructures.org/ Open Data Stuctures]''' by Pat Morin, [http://jeffe.cs.illinois.edu/teaching/algorithms/ Algorithms] by Jeff Erickson
* For math content - [https://mfleck.cs.illinois.edu/building-blocks/index-sp2020.html Building Blocks for Theoretical Computer Science] by Margaret M. Fleck, [https://courses.csail.mit.edu/6.042/spring18/mcs.pdf Mathematics for Computer Science] by Eric Lehman, F Thomson Leighton, and Albert R Meyer
* For math content - [https://mfleck.cs.illinois.edu/building-blocks/index-sp2020.html Building Blocks for Theoretical Computer Science] by Margaret M. Fleck, [https://courses.csail.mit.edu/6.042/spring18/mcs.pdf Mathematics for Computer Science] by Eric Lehman, F Thomson Leighton, and Albert R Meyer
* [https://cglab.ca/~michiel/TheoryOfComputation/TheoryOfComputation.pdf Introduction to Theory of Computation] by Anil Maheshwari and Michiel Smid
* Additional sources - as needed.
* Additional sources - as needed.
** [[GNU Debugger]], [[Make]]
** [https://en.wikipedia.org/wiki/Master_theorem_(analysis_of_algorithms) Master Theorem]
** [https://en.wikipedia.org/wiki/Master_theorem_(analysis_of_algorithms) Master Theorem]
** [https://en.wikipedia.org/wiki/Ncurses Ncurses] ([https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/ HowTo]), [https://en.wikipedia.org/wiki/GLib GLib]
** Lists of C libraries to consider: [https://www.incredibuild.com/blog/top-13-c-libraries-to-watch-out-for 13 C libraries], [https://www.gnu.org/manual/blurbs.html GNU projects], [https://github.com/oz123/awesome-c Awesome C]


'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/EgVH_lYlo3pMqngNbvzxjBUBgjEgrbOPFUK7M0zA5vLybA?e=Da3CKu CS 500 OneNote notebook]''' and might be made available later as a PDF.  Note that you will need to authenticate with your ISU account to view the notebook.  Programs that we develop during lecture will be available on the CS server here: https://cs.indstate.edu/~cs500/.  If you are logged into one of the CS systems in a terminal, you can get to these files by doing: <code>cd ~cs500/public_html/</code>.


'''Microsoft Teams''' - There is Team for our course. If you post questions there, these can be answered by anyone in the class, and everyone can see the Q&A that are coming up. You should see a CS 303 team in your teams list, or the direct link is
'''Class notes''' - Notes during class will mostly be kept in the documents in '''[https://sycamoresindstate-my.sharepoint.com/:f:/g/personal/jeffrey_kinne_indstate_edu/EiJJbQVND3FMr25IAoHydnUBADrC7z-tZH_OTaD1h_A8Ow this OneDrive folder]'''.  Note that you will need to authenticate with your ISU account to view the notebook.  Programs that we develop during lecture will be available on the CS server here: https://cs.indstate.edu/~cs500/.  If you are logged into one of the CS systems in a terminal, you can get to these files by doing: <code>cd ~cs500/public_html/</code>.
[https://teams.microsoft.com/l/team/19%3auKX7eBtai5kQuLepqJ2w4F1Qrn7EhiX9LmqpHniZVkk1%40thread.tacv2/conversations?groupId=58c6bdb9-22c4-4260-a67f-5f181ab3faae&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 500 Teams direct link]


=Announcements/Assignments/Quizzes=
=Announcements/Assignments/Quizzes/Exams=
This section will be kept up to date with announcements of assigned reading, assignments, quizzes, etc. This will be kept as a "stack" with the most recent at the top of the list.
'''HW and Labs'''
These are posted in Canvas and on the CS server. HWs are normally due 1 week after assigned. Labs are normally due the next class period after assigned (2 days after assigned). All times are Eastern US time.


==Assignments==
'''Quizzes'''
Rules for quizzes - https://cs.indstate.edu/wiki/index.php/Jeff_Kinne_Course_Policies#Quizzes


* '''q?''' - will be over Linux terminal commands and using the terminal.
Practice quizzes will be here - https://indstate.instructure.com/courses/12565/quizzes
* '''h13_trees''' - will involve writing code for both a basic binary search tree and for red black trees.
* '''h12_sort''' - on the server, due Apr 11, see zoom recording from Apr 3.
* '''h11_hashtable''' - on the server, due Apr 4, see zoom recordings from Mar 24 and 27.
* '''q9 - [https://indstate.instructure.com/courses/12565/quizzes/231869 big O asymptotics]''' - Mar 29 along with midterm exam.
* '''q8 - [https://indstate.instructure.com/courses/12565/quizzes/231882 miscellaneous math]''' - Mar 22. Quiz stats (% score): max, median, min, average - 100, 94.44444444, 90.72222222, 95.05555556. Quiz stats (minutes): max, median, min, avg - 11, 8, 3, 7.5.
* '''q7 - [https://indstate.instructure.com/courses/12565/quizzes/231880 math notation]''' - Mar 22. Quiz stats (% score): max, median, min, average - 100, 97.95918367, 83.67346939, 95.23809524. Quiz stats (minutes): max, median, min, avg - 18, 10.5, 5, 10.83333333.
* '''q6 - [https://indstate.instructure.com/courses/12565/quizzes/231879 math and bases]''' - Mar 22. Quiz stats (% score): max, median, min, average - 100, 100, 83.33333333, 95.83333333. Quiz stats (minutes): max, median, min, avg - 10, 6.5, 4, 6.833333333.
* '''h10_arraystack''' - on the server, due Mar 13, see zoom recording from Mar 3.
* '''q5 - [https://indstate.instructure.com/courses/12565/quizzes/239045 Data structures]''' - in class on Feb 22. Quiz states (% score): max, median, min, average - 100, 83.33333333, 0, 73.61111111. Quiz stats (minutes): max, median, min, average - 60, 50.5, 11, 44.75.
* '''h9_chess''' - on the server, due Feb 17/20, see zoom recording from Feb 12.
* '''q4 - fix errors''' - when done with h8, you will put your answers into q4 (since that will autograde 1/2 of the assignment).  Note - only keeping the auto-graded parts, so max score is 35. Quiz stats (% score): max, median, min, average - 100, 91.42857143, 71.42857143, 89.3877551.  Quiz stats (minutes): max, median, min, average - NA on this one.
* '''h8_fix_errors''' - on the CS server, when finished you also will do q4.
* '''h7_C''' - on the CS server, a bunch of small C programs.  Due Feb 11, you should get started right away.
* '''h6_C''' - on the CS server.  Check out similar to h5_linux. See the lecture from Jan 27 for how to work on this assignment.  Due Feb 1/3.
* '''q3 - [https://indstate.instructure.com/courses/12565/quizzes/231870 C Errors]''' - that is a link to a practice quiz.  In class on Jan 23.  Quiz stats (% score): max, median, min, average - 90, 80, 10, 70.  Quiz stats (minutes taken): max, median, min, average - 23, 13, 7, 13.88888889.
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231873 C Operators and expressions]''' - that is a link to a practice quiz.  In class on Jan 23.  Quiz stats (% score): max, median, min, average - 100, 98.27586207, 62.06896552, 91.95402299.  Quiz stats (minutes taken): max, median, min, average - 18, 14, 10, 13.88888889.
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231872 C Keywords and Datatypes]''' - that is a link to a practice quiz. See also [[C Basics]] for quiz q1-q3 material. In class on Jan 23.  Quiz stats (% score): max, median, min, average - 100, 98.41269841, 61.9047619, 90.65255732.  Quiz stats (minutes taken): max, median, min, average - 29, 11, 9, 14.
* '''h5_linux''' - on the CS server.  To check out the assignment, open a terminal on your computer, login to your cs510 account on the CS server, and run: <code>handin --checkout h5_linux</code><br> This will create a directory in your account with the files to complete for this assignment. Follow the instructions in the files.  Due Jan 18
* '''h4 - [[Text Editors]] Terminal'''.  Due Jan 13/18.
* '''h3 - [[Hello Unix Lab]]'''.  Due Jan 13/18.
* '''h2 - [[CS Server - Terminal]]'''.  Due Jan 13/18.
* '''h1 - [[CS Accounts and CS Lab Computers]]'''.  Note that your login information will be sent to you by email soon, and you will need to work on h1 and h2 simultaneously.  Due Jan 13/18.


==Announcements==
'''Exams'''
* Future hw's - python library, curses, arduino
Rules for exams - https://cs.indstate.edu/wiki/index.php/Jeff_Kinne_Course_Policies#Exams
* After midterm - continuing with MST, graphs.
 
* Jeff - let ODS know the bugs in their merge/merge_sort pseudocode.
'''Announcements'''
* May 5 - 10-11:50am is the final exam.
Announcements will normally be posted to the course in Canvas.
* May 3 - hw's due by midnight.  If you have yours done earlier, let me know and I'll grade them as they come in (hopefully a 24 hours turnaround).
* May ?? - canvas quiz retakes.
* Apr 28 - see [[CS 500 final]]. Check there to put in good times for you to do canvas quiz retakes. Saturday or Sunday I'll send an update of grades - will look h10, h11, h12, h13 again.
* Apr 26 - questions on assignments.  h13 is the end of hw's.
* Apr 24 - note update to h13 - see README in ~cs500/h13_trees. h11 - cs50003's memory leaks. h12 - make sure to do the numeric/alpha sort, when you need to swap or move items just copy pointers, reminder to use run_tests.sh (and change the parameters at the top depending on whether testing all sorts or just the fast ones).
* Apr 20 - reading assignment - https://en.wikipedia.org/wiki/Disjoint-set_data_structure
* Apr 20 - final exam - will be essay questions only (on C programming, data structures and algorithms), you can ask to retake canvas quizzes if you need any, interview will be optional to demonstrate knowledge/skill of hw assignments that are no longer being graded.  Our final exam slot is May 5 (Fri) 10-11:50; TBD whether the exam is then or possibly take-home.
* Apr 20 - letter grades - will be computed similarly to how they were after the midterm exam. Will include latest hw's as well. See updated spreadsheet linked from the part of the syllabus about grades (after today's lecture).  I'll send an update next week, with the latest hw's included.
* Apr 20 - Finish running time analysis of Kruskal's MST algorithm (see end of MST page in OneNote).  Correctness proof for Prim's MST algorithm.
* Apr 18 - MST in graphs.
* Apr 17 - Jeff's solution for h11 fixed (was not resizing properly, so was wrong if # distinct words greater than 1024). ~cs500/h11_hashtable/README has been updated to include notes on things people need to fix in general, and you will get an email with additional things that pertains your programs.
* Apr 14 - No lecture.
* Apr 12 - h13 released with regular BST.  Still need to add in to h13 - testing remove, and red-black-tree.  Note - doing the code for the red-black tree is how we'll finish that. h12 testing.  h12 - start by doing at least one of the slow sorts and one of the fast ones.
* Apr 10 - red black trees.
* Apr 7 - questions on h11, h12?  2-4 trees (aka B trees).
* Apr 5 - NOTE - you should run your program with valgrind on the CS server to make sure you don't have any memory leaks or other problems.
* Apr 5 - Note bugs that were in h12 code from last time (lines=new_p, argc < 3). Testing h12, comparing with sort command, qsort function, sort in Python. Questions on h12.  Note a few "bugs" in the pseudocode in ODS for merge sort.
* Apr 3 - questions on grading, h11.
* Mar 31 - grades and such coming over the weekend. I haven't looked at quiz scores from the midterm yet; otherwise, I think quiz scores are correct.  I have to only check the data structures with heap questions.
* Mar 29 - midterm exam
* Mar 27 - h11 assignment. h11 - need to enable hwcheck; done now (after class was over). See README for script to run on output of hash table program.  Reminder to sign up for a 30 minute meeting for your exam interview - link below.
* Mar 24 - h11 assignment.  Jeff fix linkedlist_driver so it prints the list at the end (needed for verifying that it is working correctly) - no change needed, the print_list command does this. 
* Mar 24 - to schedule your midterm part 2, use https://cs.indstate.edu/jkinne-meeting and choose a 30 minute meeting.
* Mar 22 - information on midterm, letter grades.  Quizzes during class on: math and bases, math notation, miscellaneous math.
* Mar 21 - information on letter grade calculations - see below in the syllabus in the section about grading, there is a bullet point for the midterm grade. Information on the midterm, see - [[CS 500 Midterm]].
* Mar 17 - graphs.
* Mar 15 - h9 feedback.  Coming up - quizzes on Big-O asymptotics, Math and bases, Math notation, Miscellaneous math.  See practice quizzes here - https://indstate.instructure.com/courses/12565/quizzes
* Mar 13 - questions on h10?  Fast sorts - heap, merge, quick.  Code for sorting in C.
* Mar 3 - today, different sorting algorithms (ODS ch 11).
* Mar 1 - master theorem, more recursion tree examples. Grading notes on h9_chess sent, second round of grading notes for h7_C.  New assignment h10_arraystack - due after break Mar 13.
* Feb 24 - big O asymptotic analysis.  Reading assignment - Building Blocks chapters on Big O and Trees (parts about recursion trees).
* Feb 22 - quiz on data structures.  Note - Jeff needs to fix the issue with the hash table questions (when inserting, if you see "del" then put the item there); that has been fixed now.  Just the quiz today - good luck.  Note that the auto-grading on the heap questions looks like it is wrong, so I will manually check those questions.
* Feb 20 - binary search trees.  grading notes for q4/h8.
* Feb 17 - hash tables.
* Feb 15 - h7 feedback.  h9 questions.  ODS will be doing - single/doubly linked list, hash tables, binary search trees.
* Feb 13 - Jeff's h6 solution.  h9 released. Continuing in ODS.  Note - we'll be getting up to this quiz soon enough: https://indstate.instructure.com/courses/12565/quizzes/239045
* Feb 10 - h7, h8/q4 - any questions?  Please turn in whatever you have by Sunday.  Starting ODS.
* Feb 10 - hw's - you are supposed to fix your mistakes and resubmit. I plan to use an all-or-nothing style grading scheme, so you really are supposed to get these early assignments to 100%.  You should fix and resubmit your h5's and h6's; if you are stuck then ask myself or the help lab to take a look at what you have.
* Feb 8 - continuing with chess.  Note the quiz score stats above.  Comments on h6_C.  Note that there was a mistake with hwcheck on some of the user_info.c test inputs, that has been fixed.
* Feb 6 - no class, keep working on assignments.
* Feb 5 - h8_fix_errors and q4 released, see video from today on getting started.
* Feb 4- h7_C released, see video from today on getting started.
* Feb 1 - retakes on q1, q2, q3.  If you have any questions about the hw.
* Jan 30 - reminder to visit the lab for h3 and h4 if you don't have a grade yet for these in canvas. grading notes on h5 were sent by email.
* Jan 30 - questions on h6.  introducing - chess game (will be a hw assignment).
* Jan 27 - Finish loop_stdin.c, and continue on.  Introducing assignment h6_C.
* Jan 23 - quizzes q1, q2, q3.
* Jan 20 - see the terminal stuff linked from [[Linux and CS Systems - Getting Started]]
* Jan 20 - continuing with C examples, note that the quizzes q1-q3 will be Monday.
* Jan 18 - continuing with examples in C - data types, how data is stored, types of memory, important code examples (loops, conditional, switch, defining and calling functions, arrays, structures, C strings, malloc, ...).
* Jan 13 - Introducing h5.  Quizzes q1, q2, q3 in one week.  Reading assignment - Essential C (all of it).  See also - [[C Basics]]
* Jan 13 - checking in on the h1-h4 assignments. Note that there is no class on Monday (university is closed for MLK Day). Starting looking at C - see link in General Information for where these files are.
* Jan 11 - first day of class, syllabus, etc.


=Course Description and Content=
=Course Description and Content=
Line 134: Line 65:
'''Course Outline'''
'''Course Outline'''
* Getting started - system setup, git, linux, bash, make, apache, math background, development on your personal computer.
* Getting started - system setup, git, linux, bash, make, apache, math background, development on your personal computer.
* Data structures - understanding/use of most important data structures - arrays, linked lists, skip list, binary search trees, red black trees, hash tables, heaps, B tree.  Implementation of some of these in C.
* Algorithms - understanding/use of basic algorithms - sorting (various), binary/linear search (and uses), graph algorithms (basic properties, BFS, DFS, MST, shortest path), strings (edit distance) - including some algorithms that are each of - greedy, dynamic programming, heuristic, randomized, brute force / backtracking.
* C programming basics - operators, reserved words, data types, base systems, overflow.
* C programming basics - operators, reserved words, data types, base systems, overflow.
* C programming strings - manipulation of C strings.
* C programming strings - manipulation of C strings.
* C programming memory management - different types of memory in C, how to use them, pros and cons.
* C programming memory management - different types of memory in C, how to use them, pros and cons.
* C programming style - good programming style for reliability, readability, extensibility, security.
* C programming style - good programming style for reliability, readability, extensibility, security.
* Data structures - understanding/use of most important data structures - arrays, linked lists, skip list, binary search trees, red black trees, hash tables, heaps, B tree.  Implementation of some of these in C.
* Algorithms - understanding/use of basic algorithms - sorting (various), binary/linear search (and uses), graph algorithms (basic properties, BFS, DFS, MST, shortest path), strings (edit distance) - including some algorithms that are each of - greedy, dynamic programming, heuristic, randomized, brute force / backtracking.
* Vocab - additional terms, algorithms, concepts at a shallow level.
* Vocab - additional terms, algorithms, concepts at a shallow level.


Line 155: Line 86:
* Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the right algorithms to solve problems efficiently.
* Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the right algorithms to solve problems efficiently.


=Grading and Assignments=
=Course Policies, Grading=
See [[Jeff Kinne Course Policies]] for course policies and how your overall letter grade will be determined.


We will be trying out what I am calling "achievements-based" grading. There are a series of skills, knowledge, and experiences that I want you to achieve.  Your final letter grades will be based strictly on which of these you have completed.  For each achievement, you can achieve the rating of incomplete, pass-, pass, pass+. The following will be our starting point for how letter grades will be assigned. I will reevaluate this throughout the term to make sure we are on track. I will also be setting the standards for pass-, pass, and pass+ for each of the achievements as we get to them in the course.
=Prerequisite, CS 500=
The prerequisite for CS 500 is admission to the CS MS program or permission of instructor. You should be a competent programmer in some programming language and have studied data structures and algorithms as a part of some course in the past.  


'''Letter grades as of now'''
You can check the CS MS admissions programming quiz to gauge your programming level - https://indstate.instructure.com/courses/12565/quizzes/238564
* See the requirements for each grade level here: https://cs.indstate.edu/~cs500/cs500-s2023%20letter%20grading.xlsx
 
'''C - lowest passing grade in a grad course'''
* Pass or higher achievement for ''all'' of the following
* System setup, git, linux, bash, make, apache, math background, personal computer
* C programming basics
* Data structures basic understanding - arrays (stack and queue), linked lists (stack and queue), binary search trees, hash tables
* Data structures programming - can write the code for methods for ''some'' of the above
* Data structures programming - can use ''some'' of the above data structures to solve problems
* Sorting algorithms - basic understanding of at least one slow and at least one efficient sorting algorithm
* Sorting algorithms - can write the code for at least one sorting algorithm
* Algorithm techniques - basic understanding of ''at least one'' greedy, divide and conquer, brute force, and dynamic programming algorithm.
* Asymptotic resource usage - basic understanding, can use Jeff's rules of thumb in simplifying expressions
 
'''B - satisfactory'''
* In addition to the above...
* Data structures programming - can write the code for methods for ''most'' of the "C grade" basic data structures
* Data structures programming - can use ''most'' of the "C grade" basic data structures to solve problems
* Data structures basic understanding - skip list, red black trees, heap, B tree
* Sorting algorithms - can write the code for at least one slow and at least one efficient sorting algorithm
* Sorting algorithms - basic understanding of multiple slow and multiple efficient sorting algorithms
* Graph algorithms - basic understanding of the adjacency lists, adjacency matrices, graph algorithms DFS and BFS
* Asymptotic resource usage - can apply the precise definitions of big-O, little-o, big-Omega, little-omega, big-Theta to simplify and compare expressions; can apply the master theorem ''or'' recursion tree methods to recursive resource formulae
 
'''A - good/excellent'''
* In addition to the above...
* Pass+ rating on most of the above
* Pass or higher achievement for ''all'' of the following
* Graph algorithms - can write the code for some of the "B level" graph algorithms
* Graph algorithms - basic understanding of an MST algorithm and shortest path algorithm
* Asymptotic resource usage - can apply the master theorem ''and'' recursion tree methods to recursive resource formulae
* Integer algorithms - basic understanding of faster-than-obvious multiplication and exponentiation algorithms
* Algorithm techniques - can write code for at least one algorithm for each of the "C level" algorithm techniques
* Algorithm techniques - basic understanding of ''multiple'' algorithms for each of the "C level" algorithm techniques
* Complexity theory - basic understanding of the definitions of L, P, NP, PSPACE, EXP and a few canonical problems in each
 
Achievements can be earned based on quizzes, assignments, in-class work, and exams. Rather than having numerical scores for these, I will use them to mark off your achievements. Note that achievements can be "lost" if you demonstrate a skill early in the term and then demonstrate a lack of the skill later in the term. I expect this will not normally be the case, but I will continue to evaluate you based on all of the skills throughout the term.
 
'''Late Work''' -
Assignments will generally be available to still handin for around a week after their due date.  Once the solutions are posted and discussed, late submissions will no longer be graded.  Quizzes will normally need to be taken on the day they are due, or perhaps within a few days of when they are due.  Solutions will normally be discussed or posted within a week of their due date.  Not accepting late work that is more than about a week old is in part because it takes much longer to grade quizzes/assignments that are no longer super fresh in the instructor's head, and in part to try to keep everyone in the class working on the same material. 


=Assignments=
'''Start Assignments and Quiz Studying Early''' -  
'''Start Assignments and Quiz Studying Early''' -  
I suggest attempting an assignment the day it is given, or the day after, so that if you have a problem you can ask early. If you continue to have problems in trying to complete the assignment, you will have time to ask again. Many of the assignments require thought and problem solving, which takes "time on the calendar" not just "time on the clock". By that I mean that spending an hour on 3 consecutive days is likely to be more productive than trying to spend 3 hours at once on the assignment.
I suggest attempting an assignment the day it is given, or the day after, so that if you have a problem you can ask early. If you continue to have problems in trying to complete the assignment, you will have time to ask again. Many of the assignments require thought and problem solving, which takes "time on the calendar" not just "time on the clock". By that I mean that spending an hour on 3 consecutive days is likely to be more productive than trying to spend 3 hours at once on the assignment.
Line 211: Line 105:
Note - please find a way to spend enough time on this class (the investment will pay off in terms of skills, being able to get a job, etc.).
Note - please find a way to spend enough time on this class (the investment will pay off in terms of skills, being able to get a job, etc.).


'''Grade Meanings''' -
=Grade Meanings=
The letter grades are intended to have the following rough meaning.  The list of achievements needed for each was chosen with this in mind.
Letter grades in this course are intended to have the following rough meaning.  
* A+/A: You understand everything and probably could teach the course yourself.
* A+/A: You understand everything and probably could teach the course yourself.
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.
* C/C+/B-/B: Some things you understand very well and others you don't (more towards the former for a B and more towards the latter for a C).
* C/C+/B-/B: Some things you understand very well and others you don't (more towards the former for a B and more towards the latter for a C).
* D-/D+/C-: You did put some effort in, and understand many things at a high level, but you haven't mastered the details well enough to be able to use this knowledge in the future.  '''Note that the lowest grade for grad courses is a C, so if you fall in the range below C then your letter grade will be an F.'''
* D-/D+/C-: You did put some effort in, and understand many things at a high level, but you haven't mastered the details well enough to be able to use this knowledge in the future.  '''Note that the lowest grade for grad courses is a C, so if you fall in the range below C then your letter grade will be an F.'''
* F: Normally, students that get an F simply stopped doing the required work at some point.
* F: Normally, students that get an F simply stopped doing the required work at some point, or cheated on something.
The default assignment of letter grades will initially be the usual one (90 is an A-, 80 is a B-, etc.), but these cutoffs will be adjusted down (in your favor). I will adjust these cutoffs and let you know where you stand periodically throughout the term.


=CS-Specific Items=
=CS-Specific Items=
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).
==CS Course Policies==
Note that this course follows all standard CS course policies. In particular, (a) cheating/plagiarism by graduate students results in an F in the course, (b) and there will be no makeup exams. See http://cs.indstate.edu/info/policies.html for details.


==Lab Help==
==Lab Help==
We have a few lab assistants who are available to help students in beginning computer science courses. Please see https://cs.indstate.edu/wiki/index.php/Unix_Lab_and_Help for details. The lab hours are in a calendar on the CS homepage, at http://cs.indstate.edu/info/index.php#lab_hours. You can join the lab when working on your programs. You can ask the lab assistants to look at your programs, and you can work with any other CS students that are there (you could use the lab as a regular meeting place to work with your classmates).
See https://cs.indstate.edu/wiki/index.php/Unix_Lab_and_Help  


==Course Announcements==
==Course Announcements==
Announcements regarding the course will be made both during class and via email to your @sycamores.indstate.edu email address. You should regularly check this email account or have it forwarded to an account that you check regularly. You can set the account to forward by logging into your indstate.edu email online (if you aren't able to find the option, try a different browser or search online for things like - outlook online forward email setting).
Announcements regarding the course will be made both during class and in Canvas. You should make sure your settings are such that you will be notified of these announcements (e.g., by email). You should regularly check your ISU email account or have it forwarded to an account that you check regularly. You can set the account to forward by logging into your indstate.edu email online (if you aren't able to find the option, try a different browser or search online for things like - outlook online forward email setting).


==Classroom conduct==
==Classroom conduct==
Line 235: Line 127:


==Academic Integrity==
==Academic Integrity==
'''See also [[Jeff Kinne Course Policies]]''' for additional information for more specifics about how I am handling these things for this course.
Please follow these guidelines to avoid problems with academic misconduct in this course:
Please follow these guidelines to avoid problems with academic misconduct in this course:


''Homework:'' You may discuss the homework assignments, but should solve and finish them on your own. To make sure you are not violating this, if you discuss with someone, you should DESTROY any work or evidence of the discussion, go your separate ways, SPEND at least an hour doing something completely unrelated to the assignment, and then you should be able to RECREATE the program/solution on your own, then turn that in. If you cannot recreate the solution on your own, then it is not your work, and you should not turn it in.
''Homework:'' You may discuss the homework assignments, but should solve and finish them on your own. To make sure you are not violating this, if you discuss with someone, you should DESTROY any work or evidence of the discussion, go your separate ways, SPEND at least an hour doing something completely unrelated to the assignment, and then you should be able to RECREATE the program/solution on your own, then turn that in. If you cannot recreate the solution on your own, then it is not your work, and you should not turn it in.


''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism. You should not be directly copy/pasting without prior approval; if you have approval you need to give a citation right at the point where it is used (i.e., in a comment) and at the top of your file.


''Exams:'' This should be clear no cheating during exams. Each instructor has different rules for what is allowed on exams in terms of notes, etc. If not noted otherwise, you should assume that a quiz or exam is closed notes, no computer, no calculator.
''Exams:'' This should be clear - no cheating during exams. Each instructor has different rules for what is allowed on exams in terms of notes, etc. If not noted otherwise, you should assume that a quiz or exam is closed notes, no computer, no calculator.


''Projects:'' You should not copy from the Internet or anywhere else. The project should be your own work. It will be fairly obvious to me if you do copy code from the Internet, and the consequences will be at the least a 0 on the project.
''Projects:'' You should not copy from the Internet or anywhere else. The project should be your own work.  
If cheating is observed, you will at the least receive a 0 for the assignment (and may receive an F for the course), and I will file a Notification of Academic Integrity Violation Report with Student Judicial Programs, as required by the university's policy on Academic Integrity. A student who is caught cheating twice (whether in a single course or different courses) is likely to be brought before the All University Court hearing panel, which can impose sanctions up to and including suspension/expulsion. See http://www.indstate.edu/sjp/docs/code.pdf and http://www.indstate.edu/academicintegrity/ for more information.


Please ask the instructor if you have doubts about what is considered cheating in this course.
Please ask the instructor if you have doubts about what is considered cheating in this course.


==Office hours (using Teams)==
==Office hours==
Office hours will be through Microsoft Teams by default. If you would like to meet in person you should reserve an appointment using http://cs.indstate.edu/jkinne-meeting to reserve an in person meeting with Jeff Kinne. I am normally in my office during my listed office hours, but by making an appointment you can be more certain. For meeting through Teams, you should start Teams in your browser or start the application. You should be logged in using your ISU credentials. Once you have Teams open you can message me to ask me questions or to ask to talk. We can use Teams to message (better than emailing back and forth repeatedly if you have questions about something that you just want to write about) or to talk and share screens (e.g., to take a look at your code). I normally have Teams open on my computer all of the time, including during my office hours. During my office hours I will normally reply right away; at other times I will reply when I get a chance.
You can contact me by email or Teams or come to my office during the hours I am normally there. If you want to be sure I am there you can sign up for an appointment. Note that I normally am available for online meetings SMTWR 8-10pm as well. If you would like to meet in person you should reserve an appointment using http://cs.indstate.edu/jkinne-meeting to reserve an in person meeting with Jeff Kinne. I am normally in my office during my listed office hours, but by making an appointment you can be more certain.


==Canvas==
==Canvas==
The course has a canvas site. Click https://indstate.instructure.com/ to go to canvas. You should see this course listed under your courses for the current term. If you don't you may need to click on the Courses icon and then click the "All courses" link. The canvas site is used for giving you your grades, for quizzes/exams, and for getting to online lectures (which are done using Zoom). Announcements will be sent through canvas and to your university email. Links and such will be kept on this website.
The course has a canvas site. Click https://indstate.instructure.com/ to go to canvas. You should see this course listed under your courses for the current term. If you don't you may need to click on the Courses icon and then click the "All courses" link. The canvas site is used for giving you your grades, for quizzes/exams, for getting to online lectures (which are done using Zoom), and for posting announcements.


==Lectures (using Zoom) ==
==Lectures (using Zoom) ==
Here at ISU section numbers starting with the number 3 (e.g.3xx: 301, 302, etc.) are generally online sections. There are 2 types of online sections, synchronous online and asynchronous online. Sections that are synchronous should be joined at the regularly scheduled time of the course, whereas sections that are asynchronous generally keep up with the material independently without regularly scheduled meetings. In general async sections are more difficult to stay on top of, and require a great deal of self-discipline (it is much easier to think "I can watch the videos tomorrow" and just get behind). So if you are in one of these sections make sure you get off to a strong start, and ask for help sooner rather than later. If you are in an online section, check your course schedule for course meeting times; if you have a meeting time, then your section is synchronous, otherwise it is asynchronous (or there is an error in the system).
Here at ISU section numbers starting with the number 3 (e.g.3xx: 301, 302, etc.) are generally online sections. There are 2 types of online sections, synchronous online and asynchronous online. Sections that are synchronous should be joined at the regularly scheduled time of the course, whereas sections that are asynchronous generally keep up with the material independently without regularly scheduled meetings. In general async sections are more difficult to stay on top of, and require a great deal of self-discipline (it is much easier to think "I can watch the videos tomorrow" and just get behind). So if you are in one of these sections make sure you get off to a strong start, and ask for help sooner rather than later. If you are in an online section, check your course schedule for course meeting times; if you have a meeting time, then your section is synchronous, otherwise it is asynchronous (or there is an error in the system).


This course has a 301 section (synchronous online) and 001 section (face to face). Students in either section can participate in whatever way you need to.
For ISU's links to information on getting started with Zoom, see https://indstate.teamdynamix.com/TDClient/1851/Portal/KB/ArticleDet?ID=107534. You will get to the lectures for this course by going to Canvas, select this course, click Modules on the menu on the left, and click on the Zoom module. Once there you should see a schedule of lectures and be able to view recorded lectures. Note that you should install the Zoom application for your computer, and you will need to be logged into to Zoom with your ISU credentials to be able to connect. Also note that the lectures are recorded and only available to those in our class. Recorded lectures normally appear later the same day as the lecture.
 
For ISU's links to information on getting started with Zoom, see https://indstate.teamdynamix.com/TDClient/1851/Portal/KB/ArticleDet?ID=107534. You can also see the information linked at https://www.indstate.edu/services/student-success/cfss. You will get to the lectures for this course by going to Canvas, select this course, click Modules on the menu on the left, and click on the Zoom module. Once there you should see a schedule of lectures and be able to view recorded lectures. Note that you should install the Zoom application for your computer, and you will need to be logged into to Zoom with your ISU credentials to be able to connect. Also note that the lectures are recorded and only available to those in our class. Recorded lectures normally appear later the same day as the lecture.


Note that if you have not used Zoom with your ISU account previously, you need to go to https://indstate-edu.zoom.us and login with your ISU email address and password to get it setup.
Note that if you have not used Zoom with your ISU account previously, you need to go to https://indstate-edu.zoom.us and login with your ISU email address and password to get it setup.


==Participating online==
==Participating online==
If you are participating online, please see the information at https://www.indstate.edu/services/student-success/cfss about participating in online courses. You are expected to either join lectures live through Zoom or watch the recordings once they are available. You will complete assignments, quizzes, and exams on the same schedule as the rest of the class. For quizzes and exams you will normally have a 24 hour period during which to take the quiz/exam (note that different students will have slightly different questions and any communication between students about quiz/exam content is academic misconduct).
If you are participating online, you are expected to either join lectures live through Zoom or watch the recordings once they are available. You will complete assignments, quizzes, and exams on the same schedule as the rest of the class. For most of my courses, you can join the lecture live at the same time as the face to face students (as long as you don't have a time conflict). If you do this, then you can ask questions during lecture. Or, if you choose to watch the lecture recordings (so you can pause as needed, or watch at 1.5x or 2x), then you should send me questions you have before the next scheduled lecture.


So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.
Note that exams are required to be taken at the same time as the face to face students. These dates and times are given near the top of the syllabus.
 
For attendance when you are not in the room... If joining by zoom, you should post a comment in the chat to say if you have any questions about the current assignments, reading, the last lecture, etc. If watching the lecture later, you should watch it before the next lecture and send me a message by Teams or email saying if you have any questions or want any more examples about a particular topic. So, if not in the room, you should participate at least as much as "no questions from me right now".


=ISU Required Syllabus Items=
=ISU Required Syllabus Items=
The items in this section are required and are the same for every ISU course.
The items in this section are required and are the same for every ISU course.


==COVID-19 Information==
==Americans with Disabilities Act (ADA) Statement==
Information specific to CS courses - [[Start of Term Announcements]]
 
Indiana State University recognizes that students with disabilities may have special needs that must be met to give them equal access to college programs and facilities. If you need course adaptations or accommodations because of a disability, please contact us as soon as possible in a confidential setting either after class or in my office. All conversations regarding your disability will be kept in strict confidence.
 
Indiana State’s Accessibility & Advocacy Resources Office coordinates services for students
with disabilities: documentation of a disability needs to be on file in that office before any
accommodations can be provided. The Accessibility & Advocacy Resources Office is located at HMSU room 816. They can be contacted at 812-237-3829 or isu-aaro@indstate.edu. Appointments to discuss accommodations with the Accessibility Resources Office staff are encouraged.


''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''
Once a faculty member is notified by the Accessibility Resources Office that a student is qualified to receive academic accommodations, a faculty member is obligated to provide or allow a reasonable classroom accommodation under ADA.


Students are expected to adhere to course attendance policies, as stated in the course syllabus. Documented COVID-related absences will be treated like any other serious medical issue. Following University policy, students with a documented, serious medical issue must contact the Office of the Dean of Students for assistance. The Office of the Dean of Students will supply documentation for faculty. Students with a documented serious medical issue should not be penalized and will be given a reasonable chance to complete exams or assignments. Once notification is made, faculty will make reasonable efforts to accommodate the student’s absence and will communicate that accommodation directly to the student. Please note that faculty are not required to accommodate a serious medical issue with virtual content options, like streaming or recorded lectures. To avoid the potential of missing significant class time, students are strongly encouraged to receive the COVID vaccination that has been made available on campus. For more information about the vaccines or to find a vaccination site, go to: https://ourshot.in.gov. The ISU Health Center also administers COVID-19 vaccines by appointment.
==Non-Discrimination, Harassment, and Sexual Misconduct==
''Standard ISU language required in all syllabi...''


Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.
Indiana State University is committed to inclusive excellence. To further this goal, the university does not tolerate discrimination in its programs or activities on the basis of: race, color, national origin, gender, age, sexual orientation, gender identity or expression, disability, veteran status, or any other protected class. Title IX of the Educational Amendments of 1972 in particular prohibits discrimination based on sex in any educational institution that receives federal funding. This includes sexual violence, sexual misconduct, sexual harassment, dating violence, domestic violence, and stalking. If you witness or experience any form of the above discrimination, you are asked to report the incident immediately to Public Safety: 812-237-5555 or to The Office of Equal Opportunity & Title IX: 812-237-8954. With respect to sexual discrimination, instructors, faculty, and some staff are required by law and institutional policy to report what you share with them to The Office of Equal Opportunity & Title IX. You do, however, have the option of sharing your information with the following confidential resources on campus:
* Student Counseling Center: 812-237-3939; Gillum Hall, 2nd Floor
* Victim Advocate: 812-237-3849 or 812-243-7272 (cell); HMSU 8th Floor


The information provided in this section of the syllabus is subject to modification based on guidance by public health authorities. Changes to Covid-related policies or updated information will, as always, be posted on the ISU website and communicated in multiple ways.
For more information about discrimination and the support resources available to you visit the Office of Equal Opportunity and Title IX website. Please direct any questions or concerns to: Title IX Coordinator; 812-237-8954; Rankin Hall 426; ISU-equalopportunity-titleix@indstate.edu.


==Special Needs / Disability Services==
==TimelyCare==
''Standard ISU language required in all syllabi...''
''The ISU dean of students asked faculty and staff spread the word about this, so I am including it here in the syllabus.''
 
''Attention all faculty and staff!'' Indiana State University is now partnered with [https://app.timelycare.com/auth/login TimelyCare] to deliver a new virtual health and well-being platform for students. This service is in addition to the in-person counseling services offered in the Student Counseling Center, 2nd floor Gillum Hall.  The service provides 24/7 access to virtual care at no cost! Remind your students to take advantage of the TimelyCare services when they feel stressed or overwhelmed. We’ve included a slide that you can attach to emails, input in Canvas and present to students before and after class. 
 
In addition to services for students, TimelyCare offers Faculty Support — a service for faculty and staff that is designed to equip you with information to help students who may be struggling. It’s available 24/7/365 for free so you can get the guidance on how to support a student in need of care. Access Faculty Support by calling 833-4-TIMELY, ext. 2. 
 
''How can students access TimelyCare?'' Students can go to https://timelycare.com/indianastate or directly download the TimelyCare app from the app store to register with their school email address by clicking the "Get registered" link. It is important that our students all register in advance on the platform-- and this is where you can help us!  Students can then start visits from any web-enabled device – smartphone, tablet, laptop, or desktop – anywhere in the United States.
 
''Who can use TimelyCare?'' Any enrolled student. 
 
''What services are available?'' TalkNow - 24/7, on-demand emotional support. Scheduled Counseling - Select the day, time, and mental health provider of your choice. (6 visits per year). Self-Care Content - 24/7 access to self-care tools and resources, such as meditation and yoga sessions, helpful videos, and short articles from experts.
 
''How much does a visit cost?'' TimelyCare services are available at no cost to students.
 
 
==Getting Help==
You are also strongly encouraged to take advantage of Indiana State’s Writing Center. The Writing Center offers a variety of services designed to help students succeed in their classes and careers. The Writing Center is available to assist all registered ISU students with any area of reading or writing for any class. They can also help with personal projects like short stories or personal statements. They offer one-on-one consultations, drop-in services, and online appointments as well as group study tables.  All services are free of charge. Students can make appointments by calling (812) 237-2989 or by using the link on the Writing Center website. Please prepare for your appointment by bringing your textbook, relevant notes and materials, and a printed copy of the writing you have attempted so far.
 
The Math Lab provides free tutoring for math students through on-campus and virtual meetings. By providing a judgement-free environment, students can build their confidence and view learning math as positive and rewarding. The Math Lab is located in Root Hall, room A009. The hours vary so be sure to check the  Math Lab’s website (current link still needed, after website refresh in fall 2024) to see when tutoring hours are available for your particular math course. If you have any questions, email ISU-MathLab@indstate.edu or call (812) 237-2130.
 
Student support and accountability: https://sycamoresindstate.sharepoint.com/sites/STU-StudentSupportandAccountability
 
Accessibility and Resource Office: https://indianastate.edu/life-state/dean-students/aaro#request-accommodations
 
Student Affairs: https://indianastate.edu/life-state/dean-students
 
Writing Center: https://sycamoresindstate.sharepoint.com/sites/STU-WritingCenter
 
==Commitment to Career Readiness==
The administration, faculty, and staff at Indiana State University believe that in addition to educating students in academic content, it is important to prepare them to be professional and competent employees in the job market. We are committed to incorporating the eight career competencies outlined by the National Association of Colleges and Employers (NACE) as being necessary to success in the job search and workplace. Many of these eight career readiness competencies will be taught and integrated into your classroom learning:
 
Critical Thinking/Problem Solving, Oral/Written Communications, Teamwork/Collaboration, Digital Technology Application, Leadership, Professionalism/Work Ethic, Career Management, Global/Intercultural Fluency.
 
For additional assistance with your career development and preparation, please contact the Career Center (ISU-Career-Center@indstate.edu) or visit the [https://indianastate.edu/about/engagement/career-center Career Center's website].
 
==Artificial Intelligence in the Classroom==
 
Indiana State University recognizes the transformative potential of generative artificial intelligence programs and encourages faculty and students to develop literacy regarding these programs.
 
Your instructor may decide how to best pursue that goal within the following levels:
 
'''Most Restrictive: AI use not permitted.'''
Any use of generative AI without explicit permission will be considered academic misconduct and may result in disciplinary action, including but not limited to failing the assignment, course, or even expulsion from the university.
 
'''Moderately Restrictive: AI use permitted, but all usage must be documented.'''
Students must follow their assigned citation method for attributing ideas from outside sources, including generative AI.
Failure to document AI usage may result in incomplete assignments, a lower grade, or a requirement to re-do the assignment. Assignments that rely too heavily on AI without sufficient student input may receive reduced grades.


Indiana State University recognizes that students with disabilities may have special needs that must be met to give them equal access to college programs and facilities. If you need course adaptations or accommodations because of a disability, please contact us as soon as possible in a confidential setting either after class or in my office. All conversations regarding your disability will be kept in strict confidence. Indiana State University's Student Support Services (SSS) office coordinates services for students with disabilities: documentation of a disability needs to be on file in that office before any accommodations can be provided. Student Support Services is located on the lower level of Normal Hall in the Center for Student Success and can be contacted at 812-237-2700, or you can visit the ISU website under A-Z, Disability Student Services and submit a Contact Form. Appointments to discuss accommodations with SSS staff members are encouraged.
'''Least Restrictive: AI use required for some course assignments.'''
Some assignments will require students to explore generative AI tools and platforms.


Once a faculty member is notified by Student Support Services that a student is qualified to receive academic accommodations, a faculty member is obligated to provide or allow a reasonable classroom accommodation under ADA.
Please note that the Indiana State University Office of Information Technology cannot provide support for artificial intelligence platforms, so faculty should carefully consider how to respond to students in the event of technical problems.


==Disclosures Regarding Sexual Misconduct==
Your instructor may provide more explicit instructions regarding AI usage as part of the course syllabus and assignment descriptions.
''Standard ISU language required in all syllabi...''


Indiana State University Policy 923 strictly prohibits discrimination on the basis of: age, disability, genetic information, national origin, pregnancy, race/color, religion, sex, gender identity or expression, sexual orientation, veteran status, or any other class protected by federal and state statutes in ISU programs and activities or that interferes with the educational or workplace environment.
As a student, you need to assess the validity and applicability of any generative AI output you use; you bear the final responsibility for all work you submit.


Title IX of the Educational Amendments of 1972 prohibits discrimination based on sex, including sexual harassment. Sexual harassment includes quid pro quo harassment, unwelcome verbal or physical conduct, sexual assault, dating violence, domestic violence, and stalking.
Policies clarifying methods of enforcement against the use of AI tools should be made available in the syllabus. Faculty are discouraged from relying solely on AI-detection programs since such programs can be unreliable and prone to bias.


If you witness or experience any forms of the above discrimination, you may report to:
Several programs and applications have options to view the edit history of a file. If a student is suspected of using an AI tool in violation of course policy, they should be given the opportunity to present this history as evidence. Additionally, students should be able to explain their work and reasoning on the assignment during an in-person meeting with their instructor.


''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br>
You should always protect your data when using generative AI platforms. Do not share what you do not want easily found by others; this includes but is not limited to: private information, sensitive material, any text protected by copyright, or any course content (lecture notes, assignment descriptions, etc.) without the explicit permission of your instructor.
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br>
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10


Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br>
Generative AI platforms are part of a rapidly developing field, and policies listed here may need to change to reflect those technological advances.
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br>
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br>
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street

Revision as of 15:01, 6 August 2025

CS 500 Fundamentals of Programming is taken by CS MS students during their first term in the MS program. The main outcomes of the course are proficiency in C programming and data structures and algorithms.

It is assumed that students starting the course have passed the CS MS admissions process (see Graduate Admissions Interview, in particular those taking the course should be proficient in some programming language).

This page contains the syllabus for CS 500 for spring 2025. Previous terms - CS 500 Fall 2024, CS 500 Spring 2024, CS 500 Fall 2023, CS 500 Spring 2023, CS 500 Fall 2022.

General Information

Course website - https://cs.indstate.edu/wiki/index.php/CS_500

Your Instructor

Jeff Kinne, jkinne@indstate.edu
Office: Myers Technology Center (TC) 301D and in Microsoft Teams, phone 812-237-3394
Instructor Office Hours: MWF 8-9am, 2-3pm, TR 10am-2pm
Meeting: https://cs.indstate.edu/jkinne-meeting

Graduate assistant help - Isaiah Bartlett supports this course. You can email him or set up an appointment - see https://cs.indstate.edu/wiki/index.php/ISU_CS_People#CS_Departmental_Graduate_Assistants

Lecture, Exam

Lecture: MWF 11-11:50am, in Myers Technology Center (TC) 307 and over Zoom (link in Canvas, see below), and recorded
Mid-term exam: Wednesday Mar 5, 10-10:50am
Final exam: Friday May 9, 10am-11:50am

Prerequisites - admission to the CS MS program or approval of instructor, should be a competent programmer in some programming language. See section below on CS 500 versus CS 510 for helping to decide if you are ready to take this course, and you can contact the instructor as well.

CRN numbers - 10993 for the 001 face to face section, 11384 for the 301 online section

Required text We will use the following free online sources.


Class notes - Notes during class will mostly be kept in the documents in this OneDrive folder. Note that you will need to authenticate with your ISU account to view the notebook. Programs that we develop during lecture will be available on the CS server here: https://cs.indstate.edu/~cs500/. If you are logged into one of the CS systems in a terminal, you can get to these files by doing: cd ~cs500/public_html/.

Announcements/Assignments/Quizzes/Exams

HW and Labs These are posted in Canvas and on the CS server. HWs are normally due 1 week after assigned. Labs are normally due the next class period after assigned (2 days after assigned). All times are Eastern US time.

Quizzes Rules for quizzes - https://cs.indstate.edu/wiki/index.php/Jeff_Kinne_Course_Policies#Quizzes

Practice quizzes will be here - https://indstate.instructure.com/courses/12565/quizzes

Exams Rules for exams - https://cs.indstate.edu/wiki/index.php/Jeff_Kinne_Course_Policies#Exams

Announcements Announcements will normally be posted to the course in Canvas.

Course Description and Content

Course Description

The catalog description for this course is: "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." The two main goals are that you leave the course as proficient C programmers and proficient at using and analyzing the most important data structures and algorithms.

Course Outline

  • Getting started - system setup, git, linux, bash, make, apache, math background, development on your personal computer.
  • Data structures - understanding/use of most important data structures - arrays, linked lists, skip list, binary search trees, red black trees, hash tables, heaps, B tree. Implementation of some of these in C.
  • Algorithms - understanding/use of basic algorithms - sorting (various), binary/linear search (and uses), graph algorithms (basic properties, BFS, DFS, MST, shortest path), strings (edit distance) - including some algorithms that are each of - greedy, dynamic programming, heuristic, randomized, brute force / backtracking.
  • C programming basics - operators, reserved words, data types, base systems, overflow.
  • C programming strings - manipulation of C strings.
  • C programming memory management - different types of memory in C, how to use them, pros and cons.
  • C programming style - good programming style for reliability, readability, extensibility, security.
  • Vocab - additional terms, algorithms, concepts at a shallow level.

Learning Outcomes

  • System setup - personal computer setup for both remote (connecting to CS server with terminal, sftp, X windows) and local development (editor, compiler).
  • Git - basic use of git for source code management.
  • Linux - proficient using the Linux terminal for development.
  • Bash - basic use of bash scripts for testing code.
  • Make - basic use of GNU make for compiling code.
  • Apache - able to post content to your CS accounts to be viewable over the web.
  • Math background - proficient in math background needed for data structures and algorithms.
  • Personal computer - is setup for development so you can do coursework from your home computer as well.
  • C programming - understanding of all language features, proficient in writing code using the most common, write code using good programming style.
  • Data structures - understanding of operations, efficiency, use cases, can write code in C for data structure operations.
  • Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the right algorithms to solve problems efficiently.

Course Policies, Grading

See Jeff Kinne Course Policies for course policies and how your overall letter grade will be determined.

Prerequisite, CS 500

The prerequisite for CS 500 is admission to the CS MS program or permission of instructor. You should be a competent programmer in some programming language and have studied data structures and algorithms as a part of some course in the past.

You can check the CS MS admissions programming quiz to gauge your programming level - https://indstate.instructure.com/courses/12565/quizzes/238564

Assignments

Start Assignments and Quiz Studying Early - I suggest attempting an assignment the day it is given, or the day after, so that if you have a problem you can ask early. If you continue to have problems in trying to complete the assignment, you will have time to ask again. Many of the assignments require thought and problem solving, which takes "time on the calendar" not just "time on the clock". By that I mean that spending an hour on 3 consecutive days is likely to be more productive than trying to spend 3 hours at once on the assignment.

Expected Amount of Work - My expectation is that an average student will spend about 5-10 hours OUTSIDE of class each week (that is in addition to class time or viewing lecture videos) WORKING PRODUCTIVELY/EFFICIENTLY (not just staring at the computer) to complete their coursework for this class. Some students may spend less time than this, and some students will spend more.

This is the foundation for the rest of CS, so it definitely pays off to do your best here.

Note - please find a way to spend enough time on this class (the investment will pay off in terms of skills, being able to get a job, etc.).

Grade Meanings

Letter grades in this course are intended to have the following rough meaning.

  • A+/A: You understand everything and probably could teach the course yourself.
  • B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.
  • C/C+/B-/B: Some things you understand very well and others you don't (more towards the former for a B and more towards the latter for a C).
  • D-/D+/C-: You did put some effort in, and understand many things at a high level, but you haven't mastered the details well enough to be able to use this knowledge in the future. Note that the lowest grade for grad courses is a C, so if you fall in the range below C then your letter grade will be an F.
  • F: Normally, students that get an F simply stopped doing the required work at some point, or cheated on something.

The default assignment of letter grades will initially be the usual one (90 is an A-, 80 is a B-, etc.), but these cutoffs will be adjusted down (in your favor). I will adjust these cutoffs and let you know where you stand periodically throughout the term.

CS-Specific Items

This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).

Lab Help

See https://cs.indstate.edu/wiki/index.php/Unix_Lab_and_Help

Course Announcements

Announcements regarding the course will be made both during class and in Canvas. You should make sure your settings are such that you will be notified of these announcements (e.g., by email). You should regularly check your ISU email account or have it forwarded to an account that you check regularly. You can set the account to forward by logging into your indstate.edu email online (if you aren't able to find the option, try a different browser or search online for things like - outlook online forward email setting).

Classroom conduct

You may not use cell phones, iPods/music players, etc. during class. You should be civil and respectful to both the instructor and your classmates, and you should arrive to class a few minutes before the scheduled lecture so you are ready for lecture to begin on time. You may use your computer during class if you are using it to follow along with the examples that are being discussed. You should avoid spending time on email, Facebook, work on other courses, etc. during the lecture for this class (be fully present wherever you are, make the most of each experience).

Academic Integrity

See also Jeff Kinne Course Policies for additional information for more specifics about how I am handling these things for this course.

Please follow these guidelines to avoid problems with academic misconduct in this course:

Homework: You may discuss the homework assignments, but should solve and finish them on your own. To make sure you are not violating this, if you discuss with someone, you should DESTROY any work or evidence of the discussion, go your separate ways, SPEND at least an hour doing something completely unrelated to the assignment, and then you should be able to RECREATE the program/solution on your own, then turn that in. If you cannot recreate the solution on your own, then it is not your work, and you should not turn it in.

Note on sources: if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism. You should not be directly copy/pasting without prior approval; if you have approval you need to give a citation right at the point where it is used (i.e., in a comment) and at the top of your file.

Exams: This should be clear - no cheating during exams. Each instructor has different rules for what is allowed on exams in terms of notes, etc. If not noted otherwise, you should assume that a quiz or exam is closed notes, no computer, no calculator.

Projects: You should not copy from the Internet or anywhere else. The project should be your own work.

Please ask the instructor if you have doubts about what is considered cheating in this course.

Office hours

You can contact me by email or Teams or come to my office during the hours I am normally there. If you want to be sure I am there you can sign up for an appointment. Note that I normally am available for online meetings SMTWR 8-10pm as well. If you would like to meet in person you should reserve an appointment using http://cs.indstate.edu/jkinne-meeting to reserve an in person meeting with Jeff Kinne. I am normally in my office during my listed office hours, but by making an appointment you can be more certain.

Canvas

The course has a canvas site. Click https://indstate.instructure.com/ to go to canvas. You should see this course listed under your courses for the current term. If you don't you may need to click on the Courses icon and then click the "All courses" link. The canvas site is used for giving you your grades, for quizzes/exams, for getting to online lectures (which are done using Zoom), and for posting announcements.

Lectures (using Zoom)

Here at ISU section numbers starting with the number 3 (e.g.3xx: 301, 302, etc.) are generally online sections. There are 2 types of online sections, synchronous online and asynchronous online. Sections that are synchronous should be joined at the regularly scheduled time of the course, whereas sections that are asynchronous generally keep up with the material independently without regularly scheduled meetings. In general async sections are more difficult to stay on top of, and require a great deal of self-discipline (it is much easier to think "I can watch the videos tomorrow" and just get behind). So if you are in one of these sections make sure you get off to a strong start, and ask for help sooner rather than later. If you are in an online section, check your course schedule for course meeting times; if you have a meeting time, then your section is synchronous, otherwise it is asynchronous (or there is an error in the system).

For ISU's links to information on getting started with Zoom, see https://indstate.teamdynamix.com/TDClient/1851/Portal/KB/ArticleDet?ID=107534. You will get to the lectures for this course by going to Canvas, select this course, click Modules on the menu on the left, and click on the Zoom module. Once there you should see a schedule of lectures and be able to view recorded lectures. Note that you should install the Zoom application for your computer, and you will need to be logged into to Zoom with your ISU credentials to be able to connect. Also note that the lectures are recorded and only available to those in our class. Recorded lectures normally appear later the same day as the lecture.

Note that if you have not used Zoom with your ISU account previously, you need to go to https://indstate-edu.zoom.us and login with your ISU email address and password to get it setup.

Participating online

If you are participating online, you are expected to either join lectures live through Zoom or watch the recordings once they are available. You will complete assignments, quizzes, and exams on the same schedule as the rest of the class. For most of my courses, you can join the lecture live at the same time as the face to face students (as long as you don't have a time conflict). If you do this, then you can ask questions during lecture. Or, if you choose to watch the lecture recordings (so you can pause as needed, or watch at 1.5x or 2x), then you should send me questions you have before the next scheduled lecture.

Note that exams are required to be taken at the same time as the face to face students. These dates and times are given near the top of the syllabus.

For attendance when you are not in the room... If joining by zoom, you should post a comment in the chat to say if you have any questions about the current assignments, reading, the last lecture, etc. If watching the lecture later, you should watch it before the next lecture and send me a message by Teams or email saying if you have any questions or want any more examples about a particular topic. So, if not in the room, you should participate at least as much as "no questions from me right now".

ISU Required Syllabus Items

The items in this section are required and are the same for every ISU course.

Americans with Disabilities Act (ADA) Statement

Indiana State University recognizes that students with disabilities may have special needs that must be met to give them equal access to college programs and facilities. If you need course adaptations or accommodations because of a disability, please contact us as soon as possible in a confidential setting either after class or in my office. All conversations regarding your disability will be kept in strict confidence.

Indiana State’s Accessibility & Advocacy Resources Office coordinates services for students with disabilities: documentation of a disability needs to be on file in that office before any accommodations can be provided. The Accessibility & Advocacy Resources Office is located at HMSU room 816. They can be contacted at 812-237-3829 or isu-aaro@indstate.edu. Appointments to discuss accommodations with the Accessibility Resources Office staff are encouraged.

Once a faculty member is notified by the Accessibility Resources Office that a student is qualified to receive academic accommodations, a faculty member is obligated to provide or allow a reasonable classroom accommodation under ADA.

Non-Discrimination, Harassment, and Sexual Misconduct

Standard ISU language required in all syllabi...

Indiana State University is committed to inclusive excellence. To further this goal, the university does not tolerate discrimination in its programs or activities on the basis of: race, color, national origin, gender, age, sexual orientation, gender identity or expression, disability, veteran status, or any other protected class. Title IX of the Educational Amendments of 1972 in particular prohibits discrimination based on sex in any educational institution that receives federal funding. This includes sexual violence, sexual misconduct, sexual harassment, dating violence, domestic violence, and stalking. If you witness or experience any form of the above discrimination, you are asked to report the incident immediately to Public Safety: 812-237-5555 or to The Office of Equal Opportunity & Title IX: 812-237-8954. With respect to sexual discrimination, instructors, faculty, and some staff are required by law and institutional policy to report what you share with them to The Office of Equal Opportunity & Title IX. You do, however, have the option of sharing your information with the following confidential resources on campus:

  • Student Counseling Center: 812-237-3939; Gillum Hall, 2nd Floor
  • Victim Advocate: 812-237-3849 or 812-243-7272 (cell); HMSU 8th Floor

For more information about discrimination and the support resources available to you visit the Office of Equal Opportunity and Title IX website. Please direct any questions or concerns to: Title IX Coordinator; 812-237-8954; Rankin Hall 426; ISU-equalopportunity-titleix@indstate.edu.

TimelyCare

The ISU dean of students asked faculty and staff spread the word about this, so I am including it here in the syllabus.

Attention all faculty and staff! Indiana State University is now partnered with TimelyCare to deliver a new virtual health and well-being platform for students. This service is in addition to the in-person counseling services offered in the Student Counseling Center, 2nd floor Gillum Hall. The service provides 24/7 access to virtual care at no cost! Remind your students to take advantage of the TimelyCare services when they feel stressed or overwhelmed. We’ve included a slide that you can attach to emails, input in Canvas and present to students before and after class.

In addition to services for students, TimelyCare offers Faculty Support — a service for faculty and staff that is designed to equip you with information to help students who may be struggling. It’s available 24/7/365 for free so you can get the guidance on how to support a student in need of care. Access Faculty Support by calling 833-4-TIMELY, ext. 2.

How can students access TimelyCare? Students can go to https://timelycare.com/indianastate or directly download the TimelyCare app from the app store to register with their school email address by clicking the "Get registered" link. It is important that our students all register in advance on the platform-- and this is where you can help us! Students can then start visits from any web-enabled device – smartphone, tablet, laptop, or desktop – anywhere in the United States.

Who can use TimelyCare? Any enrolled student.

What services are available? TalkNow - 24/7, on-demand emotional support. Scheduled Counseling - Select the day, time, and mental health provider of your choice. (6 visits per year). Self-Care Content - 24/7 access to self-care tools and resources, such as meditation and yoga sessions, helpful videos, and short articles from experts.

How much does a visit cost? TimelyCare services are available at no cost to students.


Getting Help

You are also strongly encouraged to take advantage of Indiana State’s Writing Center. The Writing Center offers a variety of services designed to help students succeed in their classes and careers. The Writing Center is available to assist all registered ISU students with any area of reading or writing for any class. They can also help with personal projects like short stories or personal statements. They offer one-on-one consultations, drop-in services, and online appointments as well as group study tables. All services are free of charge. Students can make appointments by calling (812) 237-2989 or by using the link on the Writing Center website. Please prepare for your appointment by bringing your textbook, relevant notes and materials, and a printed copy of the writing you have attempted so far.

The Math Lab provides free tutoring for math students through on-campus and virtual meetings. By providing a judgement-free environment, students can build their confidence and view learning math as positive and rewarding. The Math Lab is located in Root Hall, room A009. The hours vary so be sure to check the Math Lab’s website (current link still needed, after website refresh in fall 2024) to see when tutoring hours are available for your particular math course. If you have any questions, email ISU-MathLab@indstate.edu or call (812) 237-2130.

Student support and accountability: https://sycamoresindstate.sharepoint.com/sites/STU-StudentSupportandAccountability

Accessibility and Resource Office: https://indianastate.edu/life-state/dean-students/aaro#request-accommodations

Student Affairs: https://indianastate.edu/life-state/dean-students

Writing Center: https://sycamoresindstate.sharepoint.com/sites/STU-WritingCenter

Commitment to Career Readiness

The administration, faculty, and staff at Indiana State University believe that in addition to educating students in academic content, it is important to prepare them to be professional and competent employees in the job market. We are committed to incorporating the eight career competencies outlined by the National Association of Colleges and Employers (NACE) as being necessary to success in the job search and workplace. Many of these eight career readiness competencies will be taught and integrated into your classroom learning:

Critical Thinking/Problem Solving, Oral/Written Communications, Teamwork/Collaboration, Digital Technology Application, Leadership, Professionalism/Work Ethic, Career Management, Global/Intercultural Fluency.

For additional assistance with your career development and preparation, please contact the Career Center (ISU-Career-Center@indstate.edu) or visit the Career Center's website.

Artificial Intelligence in the Classroom

Indiana State University recognizes the transformative potential of generative artificial intelligence programs and encourages faculty and students to develop literacy regarding these programs.

Your instructor may decide how to best pursue that goal within the following levels:

Most Restrictive: AI use not permitted. Any use of generative AI without explicit permission will be considered academic misconduct and may result in disciplinary action, including but not limited to failing the assignment, course, or even expulsion from the university.

Moderately Restrictive: AI use permitted, but all usage must be documented. Students must follow their assigned citation method for attributing ideas from outside sources, including generative AI. Failure to document AI usage may result in incomplete assignments, a lower grade, or a requirement to re-do the assignment. Assignments that rely too heavily on AI without sufficient student input may receive reduced grades.

Least Restrictive: AI use required for some course assignments. Some assignments will require students to explore generative AI tools and platforms.

Please note that the Indiana State University Office of Information Technology cannot provide support for artificial intelligence platforms, so faculty should carefully consider how to respond to students in the event of technical problems.

Your instructor may provide more explicit instructions regarding AI usage as part of the course syllabus and assignment descriptions.

As a student, you need to assess the validity and applicability of any generative AI output you use; you bear the final responsibility for all work you submit.

Policies clarifying methods of enforcement against the use of AI tools should be made available in the syllabus. Faculty are discouraged from relying solely on AI-detection programs since such programs can be unreliable and prone to bias.

Several programs and applications have options to view the edit history of a file. If a student is suspected of using an AI tool in violation of course policy, they should be given the opportunity to present this history as evidence. Additionally, students should be able to explain their work and reasoning on the assignment during an in-person meeting with their instructor.

You should always protect your data when using generative AI platforms. Do not share what you do not want easily found by others; this includes but is not limited to: private information, sensitive material, any text protected by copyright, or any course content (lecture notes, assignment descriptions, etc.) without the explicit permission of your instructor.

Generative AI platforms are part of a rapidly developing field, and policies listed here may need to change to reflect those technological advances.