https://cs.indstate.edu/wiki/api.php?action=feedcontributions&user=Jkinne&feedformat=atomComputer Science - User contributions [en]2023-02-05T03:38:42ZUser contributionsMediaWiki 1.31.0https://cs.indstate.edu/wiki/index.php?title=CS_500&diff=3762CS 5002023-02-04T15:01:44Z<p>Jkinne: /* Assignments */</p>
<hr />
<div>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. <br />
<br />
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.<br />
<br />
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).<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_500<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TR 9am-noon, MWF 2-3pm<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' MWF 11-11:50am in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Friday, May 5 10-11:50am <br> <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. <br />
<br />
'''Prerequisites''' - admission to the CS MS program or approval of instructor, should be a competent programmer in some programming language.<br />
<br />
'''CRN numbers''' - 11401 for the 001 face to face section, 12108 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use the following free online sources.<br />
* 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<br />
* 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<br />
* 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<br />
* Additional sources - as needed.<br />
<br />
'''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>.<br />
<br />
'''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<br />
[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]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
<br />
* '''q4''' - will be over Linux terminal commands and using the terminal.<br />
* '''h8_C''' - will be either chess game started in class, or another bunch of small C programs.<br />
* '''h7_C''' - on the CS server, a bunch of small C programs. Due Feb 11, you should get started right away.<br />
* '''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.<br />
* '''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.<br />
* '''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.<br />
* '''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.<br />
* '''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<br />
* '''h4 - [[Text Editors]] Terminal'''. Due Jan 13/18.<br />
* '''h3 - [[Hello Unix Lab]]'''. Due Jan 13/18.<br />
* '''h2 - [[CS Server - Terminal]]'''. Due Jan 13/18.<br />
* '''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.<br />
<br />
==Announcements==<br />
* Feb 3 - continuing with chess, next hw. Note the quiz score stats above. h6_C - nobody has submitted as of now, you should do so, remember that you should be turning in by the "preferred" due date as much as possible.<br />
* Feb 1 - retakes on q1, q2, q3. If you have any questions about the hw.<br />
* 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.<br />
* Jan 30 - questions on h6. introducing - chess game (will be a hw assignment).<br />
* Jan 27 - Finish loop_stdin.c, and continue on. Introducing assignment h6_C.<br />
* Jan 23 - quizzes q1, q2, q3.<br />
* Jan 20 - see the terminal stuff linked from [[Linux and CS Systems - Getting Started]]<br />
* Jan 20 - continuing with C examples, note that the quizzes q1-q3 will be Monday.<br />
* 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, ...).<br />
* Jan 13 - Introducing h5. Quizzes q1, q2, q3 in one week. Reading assignment - Essential C (all of it). See also - [[C Basics]]<br />
* 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.<br />
* Jan 11 - first day of class, syllabus, etc.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
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.<br />
<br />
'''Course Outline'''<br />
* Getting started - system setup, git, linux, bash, make, apache, math background, development on your personal computer.<br />
* C programming basics - operators, reserved words, data types, base systems, overflow.<br />
* C programming strings - manipulation of C strings.<br />
* C programming memory management - different types of memory in C, how to use them, pros and cons.<br />
* C programming style - good programming style for reliability, readability, extensibility, security.<br />
* 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.<br />
* 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.<br />
* Vocab - additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''Learning Outcomes'''<br />
* System setup - personal computer setup for both remote (connecting to CS server with terminal, sftp, X windows) and local development (editor, compiler).<br />
* Git - basic use of git for source code management.<br />
* Linux - proficient using the Linux terminal for development.<br />
* Bash - basic use of bash scripts for testing code.<br />
* Make - basic use of GNU make for compiling code.<br />
* Apache - able to post content to your CS accounts to be viewable over the web.<br />
* Math background - proficient in math background needed for data structures and algorithms.<br />
* Personal computer - is setup for development so you can do coursework from your home computer as well.<br />
* C programming - understanding of all language features, proficient in writing code using the most common, write code using good programming style.<br />
* Data structures - understanding of operations, efficiency, use cases, can write code in C for data structure operations.<br />
* Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the right algorithms to solve problems efficiently.<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''C - lowest passing grade in a grad course''' <br />
* Pass or higher achievement for ''all'' of the following<br />
* System setup, git, linux, bash, make, apache, math background, personal computer<br />
* C programming basics<br />
* Data structures basic understanding - arrays (stack and queue), linked lists (stack and queue), binary search trees, hash tables<br />
* Data structures programming - can write the code for methods for ''some'' of the above<br />
* Data structures programming - can use ''some'' of the above data structures to solve problems<br />
* Sorting algorithms - basic understanding of at least one slow and at least one efficient sorting algorithm<br />
* Sorting algorithms - can write the code for at least one sorting algorithm<br />
* Algorithm techniques - basic understanding of ''at least one'' greedy, divide and conquer, brute force, and dynamic programming algorithm.<br />
* Asymptotic resource usage - basic understanding, can use Jeff's rules of thumb in simplifying expressions<br />
<br />
'''B - satisfactory'''<br />
* In addition to the above...<br />
* Data structures programming - can write the code for methods for ''most'' of the "C grade" basic data structures<br />
* Data structures programming - can use ''most'' of the "C grade" basic data structures to solve problems<br />
* Data structures basic understanding - skip list, red black trees, heap, B tree<br />
* Sorting algorithms - can write the code for at least one slow and at least one efficient sorting algorithm<br />
* Sorting algorithms - basic understanding of multiple slow and multiple efficient sorting algorithms<br />
* Graph algorithms - basic understanding of the adjacency lists, adjacency matrices, graph algorithms DFS and BFS<br />
* 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<br />
<br />
'''A - good/excellent'''<br />
* In addition to the above...<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* Graph algorithms - can write the code for some of the "B level" graph algorithms<br />
* Graph algorithms - basic understanding of an MST algorithm and shortest path algorithm<br />
* Asymptotic resource usage - can apply the master theorem ''and'' recursion tree methods to recursive resource formulae<br />
* Integer algorithms - basic understanding of faster-than-obvious multiplication and exponentiation algorithms<br />
* Algorithm techniques - can write code for at least one algorithm for each of the "C level" algorithm techniques<br />
* Algorithm techniques - basic understanding of ''multiple'' algorithms for each of the "C level" algorithm techniques<br />
* Complexity theory - basic understanding of the definitions of L, P, NP, PSPACE, EXP and a few canonical problems in each<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.'''<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=Truth_table_proofs&diff=3761Truth table proofs2023-02-03T18:04:24Z<p>Jkinne: /* Disproof of a logical fallacy */</p>
<hr />
<div>Truth tables are used to show all possible values that a given logical expression might take. <br />
<br />
=Examples=<br />
==Definition of AND==<br />
The following gives the definition of the logical AND operation.<br />
<br />
{| class="wikitable" <br />
|-<br />
! A !! B !! A &and; B<br />
|-<br />
| false || false || false<br />
|-<br />
| false || true || false<br />
|-<br />
| true || false || false<br />
|-<br />
| true || true || true<br />
|}<br />
<br />
==Proof of one of De Morgan's laws==<br />
A truth table can also be used to prove a logical identity. The following proves De Morgan's law that &not; (A &and; B) is equivalent to (&not; A) &or; (&not; B). Notice that the truth values for these (the last two columns in the table) are always the same.<br />
<br />
{| class="wikitable"<br />
|- <br />
! A !! B !! A &and; B !! &not; (A &and; B) !! (&not; A) &or; (&not; B)<br />
|-<br />
| false || false || false || true || true<br />
|-<br />
| false || true || false || true || true<br />
|-<br />
| true || false || false || true || true<br />
|-<br />
| true || true || true || false || false<br />
|}<br />
<br />
==Disproof of a logical fallacy==<br />
Truth tables can also be used to disprove a logical fallacy. For example, [https://en.wikipedia.org/wiki/Affirming_the_consequent one fallacy] is to assume the converse of an implication holds. If you know that (A &rarr; B) is true, and you know that B is true, the fallacy would be to then conclude that A must also be true. Note that the statement - "if an animal is a mammal then it is also a vertebrate" - is true. If we have an animal that is a vertebrate (for example, a dog), it would be a fallacy to now conclude that the animal must also be a mammal.<br />
<br />
We will show that this is a logical fallacy - regardless of the statements A and B, just because we know A &rarr; B is true, we should not in general assume the converse is also true. First we remind you that (A &rarr; B) is equivalent to &not; A &or; B. What we want to look at is the claim: ((A &rarr; B) &and; B) &rarr; A. If this expression is always true, then we could rely on the converse to always be used. Let us first simplify the expression. It is equivalent to ((&not; A &or; B) &and; B) &rarr; A. This is equivalent to &not; ((&not; A &or; B) &and; B) &or; A. We can keep this formula in mind as we evaluate it's truth value for each possible value of A and B.<br />
<br />
Consider this truth table.<br />
{| class="wikitable"<br />
|- <br />
! A !! B !! A &rarr; B !! (A &rarr; B) &and; B !! ((A &rarr; B) &and; B) &rarr; A <br />
|-<br />
| false || false || true || false || true<br />
|-<br />
| false || true || true || true || false<br />
|-<br />
| true || false || false || false || true<br />
|- <br />
| true || true || true || true || true<br />
|}<br />
In the second row, we see that the last column is false. This is where we should expect to see a problem - the place where B is true, but we should not be able to conclude that A must also be true. We have shown that we cannot always apply the converse.<br />
<br />
=Assignment 1=<br />
You will be assigned a [https://www.cs.odu.edu/~toida/nerzic/content/logic/prop_logic/identities/identities.html logical identity] to prove and a [https://en.wikipedia.org/wiki/Formal_fallacy logical fallacy] to disprove. For each, you are permitted and encouraged to simplify the expressions to make it easier to evaluate the expressions. You then write a truth table for each part - proving the logical identity, and disproving the logical fallacy. Include a similar amount of explanation as above.<br />
<br />
Unless otherwise indicated by your instructor, you can submit your solutions in whatever format you like - word document, pictures of it worked out on paper, physical paper, OneNote notebook link. If you send a link to an electronic document, make sure it is set so it is shared with your instructor.<br />
<br />
'''Pass rating check''' Each part must be correct to earn a 1/1 on that part. The total for the problems would be 2 points.<br />
<br />
=Assignment 2=<br />
The following are additional problems related to truth tables and logic. Some are from [https://courses.csail.mit.edu/6.042/spring18/mcs.pdf Mathematics for Computer Science] (which we abbreviate MCS).<br />
<br />
# MCS Problem 3.5. This gives you more practice examining proofs for mistakes. If you have a program that produces truth tables, you may use it for this problem for part (a). <br />
# MCS Problem 3.8. This gives you some practice working with logical formulae and reasoning about them rather than just using truth tables for proofs (since the truth table for this problem would be unwieldy).<br />
# MCS Problem 3.11. This gives you practice examining logical formulae to look for examples / counter-examples of truth assignments. Note that a logical expression is ''valid'' if it is always true. For each response for this question, you should give a reason why the answer you give is correct; you don't need it to be a formal proof.<br />
# Ungraded - Show how you can use a NOR gate to construct AND, OR, NOT, XOR gates. For each you need to give the expression using just NOR gates, and you need to give a justification for why this works. Your justification could be a truth table or just reasoning about the expressions. It does not need to be a formal proof, but does need to convince the reader that your claims are true. Note - you may use the values ''true'' and ''false'' in your constructions. ''If you do a construction for NOT, you can use that in the later parts, without fully expanding it.''<br />
<br />
'''Pass rating check''' You should be able to get 90% of the individual parts completely correct, and should correctly identify any parts that you are not sure your answer is correct.<br />
<br />
'''Grading notes''' Notes on things people have missed on these problems...<br />
* MCS Problem 3.5<br />
** For part a, you need to give the truth tables asked for (* and ** from the problem) and indicate where they are different.<br />
** For part b, you need to identify where specifically Sam's argument is wrong. It is not enough to argue that his conclusion is wrong.<br />
* MCS Problem 3.8<br />
** You need to explain why the variables are forced to their values, in both of your cases. Many people gave a reasonable argument only for one of the cases.<br />
** Many people did not explain why the variables are forced in either case. Just giving the 2 truth assignments is not enough.<br />
* MCS Problem 3.11<br />
** You need to give some reason for why you give the answer you give. Some did not explain why the valid one(s) is(are) valid.<br />
* NOR gate constructions<br />
** If you found the solution online (e.g., on wikipedia) then you should put a comment in canvas to give a link to what you used. If you did use something and don't cite it, that is plagiarism, that will waste all of our time, and your grade will be impacted (maybe worse).</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=Truth_table_proofs&diff=3760Truth table proofs2023-02-03T18:03:43Z<p>Jkinne: /* Disproof of a logical fallacy */</p>
<hr />
<div>Truth tables are used to show all possible values that a given logical expression might take. <br />
<br />
=Examples=<br />
==Definition of AND==<br />
The following gives the definition of the logical AND operation.<br />
<br />
{| class="wikitable" <br />
|-<br />
! A !! B !! A &and; B<br />
|-<br />
| false || false || false<br />
|-<br />
| false || true || false<br />
|-<br />
| true || false || false<br />
|-<br />
| true || true || true<br />
|}<br />
<br />
==Proof of one of De Morgan's laws==<br />
A truth table can also be used to prove a logical identity. The following proves De Morgan's law that &not; (A &and; B) is equivalent to (&not; A) &or; (&not; B). Notice that the truth values for these (the last two columns in the table) are always the same.<br />
<br />
{| class="wikitable"<br />
|- <br />
! A !! B !! A &and; B !! &not; (A &and; B) !! (&not; A) &or; (&not; B)<br />
|-<br />
| false || false || false || true || true<br />
|-<br />
| false || true || false || true || true<br />
|-<br />
| true || false || false || true || true<br />
|-<br />
| true || true || true || false || false<br />
|}<br />
<br />
==Disproof of a logical fallacy==<br />
Truth tables can also be used to disprove a logical fallacy. For example, [https://en.wikipedia.org/wiki/Affirming_the_consequent one fallacy] is to assume the converse of an implication holds. If you know that (A &rarr; B) is true, and you know that B is true, the fallacy would be to then conclude that A must also be true. Note that the statement - "if an animal is a mammal then it is also a vertebrate" - is true. If we have an animal that is a vertebrate (for example, a dog), it would be a fallacy to now conclude that the animal must also be a mammal.<br />
<br />
We will show that this is a logical fallacy - regardless of the statements A and B, just because we know A &rarr; B is true, we should not in general assume the converse is also true. First we remind you that (A &rarr; B) is equivalent to &not; A &or; B. What we want to look at is the claim: ((A &rarr; B) &and; B) &rarr; A. If this expression is always true, then we could rely on the converse to always be used. Let us first simplify the expression. It is equivalent to ((&not; A &or; B) &and; B) &rarr; A. This is equivalent to &not; ((&not; A &or; B) &and; B) &or; A. We can keep this formula in mind as we evaluate it's truth value for each possible value of A and B.<br />
<br />
Consider this truth table.<br />
{| class="wikitable"<br />
|- <br />
! A !! B !! A &rarr; B !! (A &rarr; B) &and; B !! ((A &rarr; B) &and; B) &rarr; A <br />
|-<br />
| false || false || true || || true<br />
|-<br />
| false || true || true || || false<br />
|-<br />
| true || false || false || || true<br />
|- <br />
| true || true || true || || true<br />
|}<br />
In the second row, we see that the last column is false. This is where we should expect to see a problem - the place where B is true, but we should not be able to conclude that A must also be true. We have shown that we cannot always apply the converse.<br />
<br />
=Assignment 1=<br />
You will be assigned a [https://www.cs.odu.edu/~toida/nerzic/content/logic/prop_logic/identities/identities.html logical identity] to prove and a [https://en.wikipedia.org/wiki/Formal_fallacy logical fallacy] to disprove. For each, you are permitted and encouraged to simplify the expressions to make it easier to evaluate the expressions. You then write a truth table for each part - proving the logical identity, and disproving the logical fallacy. Include a similar amount of explanation as above.<br />
<br />
Unless otherwise indicated by your instructor, you can submit your solutions in whatever format you like - word document, pictures of it worked out on paper, physical paper, OneNote notebook link. If you send a link to an electronic document, make sure it is set so it is shared with your instructor.<br />
<br />
'''Pass rating check''' Each part must be correct to earn a 1/1 on that part. The total for the problems would be 2 points.<br />
<br />
=Assignment 2=<br />
The following are additional problems related to truth tables and logic. Some are from [https://courses.csail.mit.edu/6.042/spring18/mcs.pdf Mathematics for Computer Science] (which we abbreviate MCS).<br />
<br />
# MCS Problem 3.5. This gives you more practice examining proofs for mistakes. If you have a program that produces truth tables, you may use it for this problem for part (a). <br />
# MCS Problem 3.8. This gives you some practice working with logical formulae and reasoning about them rather than just using truth tables for proofs (since the truth table for this problem would be unwieldy).<br />
# MCS Problem 3.11. This gives you practice examining logical formulae to look for examples / counter-examples of truth assignments. Note that a logical expression is ''valid'' if it is always true. For each response for this question, you should give a reason why the answer you give is correct; you don't need it to be a formal proof.<br />
# Ungraded - Show how you can use a NOR gate to construct AND, OR, NOT, XOR gates. For each you need to give the expression using just NOR gates, and you need to give a justification for why this works. Your justification could be a truth table or just reasoning about the expressions. It does not need to be a formal proof, but does need to convince the reader that your claims are true. Note - you may use the values ''true'' and ''false'' in your constructions. ''If you do a construction for NOT, you can use that in the later parts, without fully expanding it.''<br />
<br />
'''Pass rating check''' You should be able to get 90% of the individual parts completely correct, and should correctly identify any parts that you are not sure your answer is correct.<br />
<br />
'''Grading notes''' Notes on things people have missed on these problems...<br />
* MCS Problem 3.5<br />
** For part a, you need to give the truth tables asked for (* and ** from the problem) and indicate where they are different.<br />
** For part b, you need to identify where specifically Sam's argument is wrong. It is not enough to argue that his conclusion is wrong.<br />
* MCS Problem 3.8<br />
** You need to explain why the variables are forced to their values, in both of your cases. Many people gave a reasonable argument only for one of the cases.<br />
** Many people did not explain why the variables are forced in either case. Just giving the 2 truth assignments is not enough.<br />
* MCS Problem 3.11<br />
** You need to give some reason for why you give the answer you give. Some did not explain why the valid one(s) is(are) valid.<br />
* NOR gate constructions<br />
** If you found the solution online (e.g., on wikipedia) then you should put a comment in canvas to give a link to what you used. If you did use something and don't cite it, that is plagiarism, that will waste all of our time, and your grade will be impacted (maybe worse).</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_303&diff=3759CS 3032023-02-03T17:51:04Z<p>Jkinne: /* General Information */</p>
<hr />
<div>CS 303 Discrete Structures and Computing Theory is taken by CS majors after CS 151. <br />
<br />
This page contains the syllabus for CS 303 and is used to keep track of assignments, etc. as well for the most recent offering (spring 2023). For announcements, click the link in the table of contents.<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_303<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TBD<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' WF 10-10:50am, 1-1:50pm in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Monday, May 1, 10-11:50am and/or Wednesday, May 3 1-2:50pm <br> <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. <br />
<br />
'''Prerequisites''' - C or higher in CS 151.<br />
<br />
'''CRN numbers''' - 11380 for the 001 face to face section, 12450 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use selections from the following free online sources.<br />
* '''Primary text for the beginning of the course''' - '''[https://mfleck.cs.illinois.edu/building-blocks/index-sp2020.html Building Blocks for Theoretical Computer Science]''' by Margaret M. Fleck<br />
* [https://courses.csail.mit.edu/6.042/spring18/mcs.pdf Mathematics for Computer Science] by Eric Lehman, F Thomson Leighton, and Albert R Meyer<br />
* [https://cglab.ca/~michiel/TheoryOfComputation/TheoryOfComputation.pdf Introduction to Theory of Computation] by Anil Maheshwari and Michiel Smid<br />
* Additional sources - as needed<br />
** [https://en.wikipedia.org/wiki/RSA_(cryptosystem)#Operation RSA Encryption (Operation)], [https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm Extended Euclidean Algorithm], [https://en.wikipedia.org/wiki/Fermat%27s_little_theorem Fermat's Little Theorem], [https://en.wikipedia.org/wiki/Modular_exponentiation Modular Exponentiation]<br />
** [https://en.wikipedia.org/wiki/Boolean_satisfiability_problem#3-satisfiability 3SAT NP-complete problem], [https://www.geeksforgeeks.org/proof-that-clique-decision-problem-is-np-complete/ Clique NP-complete problem], [https://cgi.csc.liv.ac.uk/~igor/COMP309/3CP.pdf 3 Coloring NP-complete problem]<br />
<br />
'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/Ei0RjIshxhlLmcwB-qhatPUBGDXtwXxc4O_-nVKPHoKrOw?e=yQKG51 CS 303 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.<br />
<br />
'''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 [https://teams.microsoft.com/l/team/19%3aFIaIH4p7m6BB3-VsZg5fx7SylggKoMt0rO7WHWqJbFk1%40thread.tacv2/conversations?groupId=6de93cd8-5594-4520-b014-7db43a7e9b4d&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 303 MS teams direct link]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
* '''q5 - [https://indstate.instructure.com/courses/12565/quizzes/231883 Number Theory]''' - that is the practice quiz. Feb 3, 1:25pm.<br />
* '''h1 - [[Truth table proofs]]''' - both assignments 1 and 2 listed there. For which logical identity and which logical fallacy you need to do, see the lecture from Jan 27 when this was shared on screen. Due Feb 3.<br />
* '''q4 - [https://indstate.instructure.com/courses/12565/quizzes/231878 Logic]''' - that is the practice quiz. Jan 27, 1:25pm. Score stats: max, median, min, average = 100, 75, 25, 69.79166667. Time to take the quiz stats: max, median, min, average = 30, 23, 5, 22.04166667.<br />
* '''q3 - [https://indstate.instructure.com/courses/12565/quizzes/231882 Miscellaneous Math]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 25.94444444, 92.50529101. Time to take the quiz stats: max, median, min, average = 13, 5, 2, 6.142857143.<br />
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231879 Math and Bases]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 66.66666667, 97.10144928. Time to take the quiz stats: max, median, min, average = 13, 5, 3, 6.173913043.<br />
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231880/take Math Notation]''' - that link is a practice quiz, the real one will be in our course in Canvas. See also [[Math for CS Review]] for a study guide of sorts. Open book, open internet, not "open other person". Jan 13 around 1:25pm (quiz will be 1:25-1:50pm). Score stats: max, median, min, average = 100, 100, 87.75510204, 98.4028394. Time to take the quiz stats: max, median, min, average = 22, 7, 5, 9.52173913.<br />
<br />
==Announcements==<br />
* Feb 8 - hw assignment - number theory, RSA, gcd, Fermat's little theorem, fast modular exponentiation. From BB, sets.<br />
* Feb 3 - reading assignment - BB up through Sets, RSA and Euclidean algorithm links under required texts above.<br />
* Feb 3 - faculty candidate teaching demo in the morning. Number theory - RSA encryption, one of our favorite results, uses the extended Euclidean algorithm. Fermat's little theorem, fast modular exponentiation. See reading links in the section above for RSA and Extended Euclidean Algorithm.<br />
* Feb 1 - this week's quiz - number theory, see link above. Faculty candidate teaching demo. Continuing with number theory.<br />
* Jan 27 - Continuing with proofs in OneNote and BB. Introducing assignment h1. Taking the q4 logic quiz in the afternoon. Starting number theory (BB chapter 4).<br />
* Jan 20 - request to move the standard quiz day to be Wednesday. Nope, stick with Fridays.<br />
* Jan 20 - guest speaker for today, faculty candidate visiting today.<br />
* Jan 18 - reading assignment - Building Blocks chapters 3, 4.<br />
* Jan 18 - today's topic - Logic. See practice quiz above.<br />
* Jan 13 - q1 set so you can see your answers and the correct answers, and stats on the scores and total time taken are above. <br />
* Jan 13 - reading assignment - Building Blocks chapter 2.<br />
* Jan 13 - math notation, the graph questions. q1 math notation quiz. Continuing through math background, including material for q2 and q3 - see links above.<br />
* Jan 11 - note that q1 will be Friday, see above. In general for quizzes, no makeups, but you'll have a chance on the midterm to take it again.<br />
* Jan 11 - reading assignment - Building Blocks chapter 1. First quizzes - Friday 1-2pm.<br />
* Jan 11 - first day of class, syllabus and such. It is good for you to take notes.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
The catalog description for this course is: "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." The two main goals are (a) being able to reason about computation (mathematical objects and algorithms), (b) familiarity with the topics listed in the description which are important in later courses.<br />
<br />
'''Course Outline'''<br />
* We will start the course by following along in the order of ''Building Blocks for Theoretical Computer Science'', see link above.<br />
<br />
'''Learning Outcomes'''<br />
* Basic math - ability to use basic algebra, properties of numbers, rules of exponents and logarithms<br />
* Proofs - understanding of what a proof is, ability to use the following methods of proof as needed - direct proof / by construction, by contradiction, by induction, by decomposition<br />
* Logic - ability to use the rules of logic (truth tables, DeMorgan's laws, etc.) in arguments<br />
* Integers - can use the properties of the integers to write algorithms and reason about their correctness<br />
* Sets, relations, functions - can apply the definitions of these concepts in proofs<br />
* Graphs, trees - understanding of standard definitions related to graphs and trees, able to argue basic properties<br />
* Asymptotic resource analysis (big-O) - can apply the definitions of big-O notation to compare different running time formulae, to simplify expressions, and to determine the big-O running time of algorithms<br />
* Complexity theory - understanding of definitions of basic complexity classes (L, P, NP, PSPACE, EXP), understanding of canonical problems in each class, can reason about these complexity classes<br />
* Notions of infinity - understanding of difference between countably and uncountably infinite, can use these in proofs<br />
* Probability - knowledge of basic definitions and properties of discrete probability, can apply to the analysis of randomized algorithms and processes<br />
* Regular languages - understanding of DFAs, NFAs, regular expressions and ability to produce models for commonly encountered languages<br />
* General models of computation - understanding of Turing-complete models of computation (Turing machine, circuits, programming languages) and implications<br />
* Computability - can give arguments whether a given problem is computable or not (e.g., the halting problem)<br />
* Notation - proper use of math notation (sets, logic, functions, summations, proofs, etc.)<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''D'''<br />
* Pass- or higher achievement for ''all'' of the following<br />
* Hello unix lab (at least 2/2)<br />
* Math notation (at least 80%)<br />
* Math bases (at least 80%)<br />
* Truth table proof (at least 1.5/2)<br />
* Proof that a number is irrational (at least 1.5/2)<br />
* Euclidean algorithm - demo of running the algorithm (at least 1.5/2)<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''C''' <br />
* Pass or higher achievement for ''all'' of the above (at least 90% on quizzes, at least 2/2 on assignment problems)<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''B'''<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''A'''<br />
* In addition to the above...<br />
* At least 1 puzzle/challenge problem solved correctly (pass rating)<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_303&diff=3758CS 3032023-02-03T17:49:05Z<p>Jkinne: /* Announcements */</p>
<hr />
<div>CS 303 Discrete Structures and Computing Theory is taken by CS majors after CS 151. <br />
<br />
This page contains the syllabus for CS 303 and is used to keep track of assignments, etc. as well for the most recent offering (spring 2023). For announcements, click the link in the table of contents.<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_303<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TBD<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' WF 10-10:50am, 1-1:50pm in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Monday, May 1, 10-11:50am and/or Wednesday, May 3 1-2:50pm <br> <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. <br />
<br />
'''Prerequisites''' - C or higher in CS 151.<br />
<br />
'''CRN numbers''' - 11380 for the 001 face to face section, 12450 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use selections from the following free online sources.<br />
* '''Primary text for the beginning of the course''' - '''[https://mfleck.cs.illinois.edu/building-blocks/index-sp2020.html Building Blocks for Theoretical Computer Science]''' by Margaret M. Fleck<br />
* [https://courses.csail.mit.edu/6.042/spring18/mcs.pdf Mathematics for Computer Science] by Eric Lehman, F Thomson Leighton, and Albert R Meyer<br />
* [https://cglab.ca/~michiel/TheoryOfComputation/TheoryOfComputation.pdf Introduction to Theory of Computation] by Anil Maheshwari and Michiel Smid<br />
* Additional sources - as needed<br />
** [https://en.wikipedia.org/wiki/RSA_(cryptosystem)#Operation RSA Encryption (Operation)], [https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm Extended Euclidean Algorithm]<br />
** [https://en.wikipedia.org/wiki/Boolean_satisfiability_problem#3-satisfiability 3SAT NP-complete problem], [https://www.geeksforgeeks.org/proof-that-clique-decision-problem-is-np-complete/ Clique NP-complete problem], [https://cgi.csc.liv.ac.uk/~igor/COMP309/3CP.pdf 3 Coloring NP-complete problem]<br />
<br />
'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/Ei0RjIshxhlLmcwB-qhatPUBGDXtwXxc4O_-nVKPHoKrOw?e=yQKG51 CS 303 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.<br />
<br />
'''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 [https://teams.microsoft.com/l/team/19%3aFIaIH4p7m6BB3-VsZg5fx7SylggKoMt0rO7WHWqJbFk1%40thread.tacv2/conversations?groupId=6de93cd8-5594-4520-b014-7db43a7e9b4d&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 303 MS teams direct link]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
* '''q5 - [https://indstate.instructure.com/courses/12565/quizzes/231883 Number Theory]''' - that is the practice quiz. Feb 3, 1:25pm.<br />
* '''h1 - [[Truth table proofs]]''' - both assignments 1 and 2 listed there. For which logical identity and which logical fallacy you need to do, see the lecture from Jan 27 when this was shared on screen. Due Feb 3.<br />
* '''q4 - [https://indstate.instructure.com/courses/12565/quizzes/231878 Logic]''' - that is the practice quiz. Jan 27, 1:25pm. Score stats: max, median, min, average = 100, 75, 25, 69.79166667. Time to take the quiz stats: max, median, min, average = 30, 23, 5, 22.04166667.<br />
* '''q3 - [https://indstate.instructure.com/courses/12565/quizzes/231882 Miscellaneous Math]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 25.94444444, 92.50529101. Time to take the quiz stats: max, median, min, average = 13, 5, 2, 6.142857143.<br />
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231879 Math and Bases]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 66.66666667, 97.10144928. Time to take the quiz stats: max, median, min, average = 13, 5, 3, 6.173913043.<br />
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231880/take Math Notation]''' - that link is a practice quiz, the real one will be in our course in Canvas. See also [[Math for CS Review]] for a study guide of sorts. Open book, open internet, not "open other person". Jan 13 around 1:25pm (quiz will be 1:25-1:50pm). Score stats: max, median, min, average = 100, 100, 87.75510204, 98.4028394. Time to take the quiz stats: max, median, min, average = 22, 7, 5, 9.52173913.<br />
<br />
==Announcements==<br />
* Feb 8 - hw assignment - number theory, RSA, gcd, Fermat's little theorem, fast modular exponentiation. From BB, sets.<br />
* Feb 3 - reading assignment - BB up through Sets, RSA and Euclidean algorithm links under required texts above.<br />
* Feb 3 - faculty candidate teaching demo in the morning. Number theory - RSA encryption, one of our favorite results, uses the extended Euclidean algorithm. Fermat's little theorem, fast modular exponentiation. See reading links in the section above for RSA and Extended Euclidean Algorithm.<br />
* Feb 1 - this week's quiz - number theory, see link above. Faculty candidate teaching demo. Continuing with number theory.<br />
* Jan 27 - Continuing with proofs in OneNote and BB. Introducing assignment h1. Taking the q4 logic quiz in the afternoon. Starting number theory (BB chapter 4).<br />
* Jan 20 - request to move the standard quiz day to be Wednesday. Nope, stick with Fridays.<br />
* Jan 20 - guest speaker for today, faculty candidate visiting today.<br />
* Jan 18 - reading assignment - Building Blocks chapters 3, 4.<br />
* Jan 18 - today's topic - Logic. See practice quiz above.<br />
* Jan 13 - q1 set so you can see your answers and the correct answers, and stats on the scores and total time taken are above. <br />
* Jan 13 - reading assignment - Building Blocks chapter 2.<br />
* Jan 13 - math notation, the graph questions. q1 math notation quiz. Continuing through math background, including material for q2 and q3 - see links above.<br />
* Jan 11 - note that q1 will be Friday, see above. In general for quizzes, no makeups, but you'll have a chance on the midterm to take it again.<br />
* Jan 11 - reading assignment - Building Blocks chapter 1. First quizzes - Friday 1-2pm.<br />
* Jan 11 - first day of class, syllabus and such. It is good for you to take notes.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
The catalog description for this course is: "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." The two main goals are (a) being able to reason about computation (mathematical objects and algorithms), (b) familiarity with the topics listed in the description which are important in later courses.<br />
<br />
'''Course Outline'''<br />
* We will start the course by following along in the order of ''Building Blocks for Theoretical Computer Science'', see link above.<br />
<br />
'''Learning Outcomes'''<br />
* Basic math - ability to use basic algebra, properties of numbers, rules of exponents and logarithms<br />
* Proofs - understanding of what a proof is, ability to use the following methods of proof as needed - direct proof / by construction, by contradiction, by induction, by decomposition<br />
* Logic - ability to use the rules of logic (truth tables, DeMorgan's laws, etc.) in arguments<br />
* Integers - can use the properties of the integers to write algorithms and reason about their correctness<br />
* Sets, relations, functions - can apply the definitions of these concepts in proofs<br />
* Graphs, trees - understanding of standard definitions related to graphs and trees, able to argue basic properties<br />
* Asymptotic resource analysis (big-O) - can apply the definitions of big-O notation to compare different running time formulae, to simplify expressions, and to determine the big-O running time of algorithms<br />
* Complexity theory - understanding of definitions of basic complexity classes (L, P, NP, PSPACE, EXP), understanding of canonical problems in each class, can reason about these complexity classes<br />
* Notions of infinity - understanding of difference between countably and uncountably infinite, can use these in proofs<br />
* Probability - knowledge of basic definitions and properties of discrete probability, can apply to the analysis of randomized algorithms and processes<br />
* Regular languages - understanding of DFAs, NFAs, regular expressions and ability to produce models for commonly encountered languages<br />
* General models of computation - understanding of Turing-complete models of computation (Turing machine, circuits, programming languages) and implications<br />
* Computability - can give arguments whether a given problem is computable or not (e.g., the halting problem)<br />
* Notation - proper use of math notation (sets, logic, functions, summations, proofs, etc.)<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''D'''<br />
* Pass- or higher achievement for ''all'' of the following<br />
* Hello unix lab (at least 2/2)<br />
* Math notation (at least 80%)<br />
* Math bases (at least 80%)<br />
* Truth table proof (at least 1.5/2)<br />
* Proof that a number is irrational (at least 1.5/2)<br />
* Euclidean algorithm - demo of running the algorithm (at least 1.5/2)<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''C''' <br />
* Pass or higher achievement for ''all'' of the above (at least 90% on quizzes, at least 2/2 on assignment problems)<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''B'''<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''A'''<br />
* In addition to the above...<br />
* At least 1 puzzle/challenge problem solved correctly (pass rating)<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_303&diff=3757CS 3032023-02-03T17:44:05Z<p>Jkinne: /* Announcements */</p>
<hr />
<div>CS 303 Discrete Structures and Computing Theory is taken by CS majors after CS 151. <br />
<br />
This page contains the syllabus for CS 303 and is used to keep track of assignments, etc. as well for the most recent offering (spring 2023). For announcements, click the link in the table of contents.<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_303<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TBD<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' WF 10-10:50am, 1-1:50pm in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Monday, May 1, 10-11:50am and/or Wednesday, May 3 1-2:50pm <br> <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. <br />
<br />
'''Prerequisites''' - C or higher in CS 151.<br />
<br />
'''CRN numbers''' - 11380 for the 001 face to face section, 12450 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use selections from the following free online sources.<br />
* '''Primary text for the beginning of the course''' - '''[https://mfleck.cs.illinois.edu/building-blocks/index-sp2020.html Building Blocks for Theoretical Computer Science]''' by Margaret M. Fleck<br />
* [https://courses.csail.mit.edu/6.042/spring18/mcs.pdf Mathematics for Computer Science] by Eric Lehman, F Thomson Leighton, and Albert R Meyer<br />
* [https://cglab.ca/~michiel/TheoryOfComputation/TheoryOfComputation.pdf Introduction to Theory of Computation] by Anil Maheshwari and Michiel Smid<br />
* Additional sources - as needed<br />
** [https://en.wikipedia.org/wiki/RSA_(cryptosystem)#Operation RSA Encryption (Operation)], [https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm Extended Euclidean Algorithm]<br />
** [https://en.wikipedia.org/wiki/Boolean_satisfiability_problem#3-satisfiability 3SAT NP-complete problem], [https://www.geeksforgeeks.org/proof-that-clique-decision-problem-is-np-complete/ Clique NP-complete problem], [https://cgi.csc.liv.ac.uk/~igor/COMP309/3CP.pdf 3 Coloring NP-complete problem]<br />
<br />
'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/Ei0RjIshxhlLmcwB-qhatPUBGDXtwXxc4O_-nVKPHoKrOw?e=yQKG51 CS 303 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.<br />
<br />
'''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 [https://teams.microsoft.com/l/team/19%3aFIaIH4p7m6BB3-VsZg5fx7SylggKoMt0rO7WHWqJbFk1%40thread.tacv2/conversations?groupId=6de93cd8-5594-4520-b014-7db43a7e9b4d&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 303 MS teams direct link]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
* '''q5 - [https://indstate.instructure.com/courses/12565/quizzes/231883 Number Theory]''' - that is the practice quiz. Feb 3, 1:25pm.<br />
* '''h1 - [[Truth table proofs]]''' - both assignments 1 and 2 listed there. For which logical identity and which logical fallacy you need to do, see the lecture from Jan 27 when this was shared on screen. Due Feb 3.<br />
* '''q4 - [https://indstate.instructure.com/courses/12565/quizzes/231878 Logic]''' - that is the practice quiz. Jan 27, 1:25pm. Score stats: max, median, min, average = 100, 75, 25, 69.79166667. Time to take the quiz stats: max, median, min, average = 30, 23, 5, 22.04166667.<br />
* '''q3 - [https://indstate.instructure.com/courses/12565/quizzes/231882 Miscellaneous Math]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 25.94444444, 92.50529101. Time to take the quiz stats: max, median, min, average = 13, 5, 2, 6.142857143.<br />
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231879 Math and Bases]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 66.66666667, 97.10144928. Time to take the quiz stats: max, median, min, average = 13, 5, 3, 6.173913043.<br />
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231880/take Math Notation]''' - that link is a practice quiz, the real one will be in our course in Canvas. See also [[Math for CS Review]] for a study guide of sorts. Open book, open internet, not "open other person". Jan 13 around 1:25pm (quiz will be 1:25-1:50pm). Score stats: max, median, min, average = 100, 100, 87.75510204, 98.4028394. Time to take the quiz stats: max, median, min, average = 22, 7, 5, 9.52173913.<br />
<br />
==Announcements==<br />
* Feb 8 - hw assignment - number theory, RSA, gcd. From BB, sets.<br />
* Feb 3 - reading assignment - BB up through Sets, RSA and Euclidean algorithm links under required texts above.<br />
* Feb 3 - faculty candidate teaching demo in the morning. Number theory - RSA encryption, one of our favorite results, uses the extended Euclidean algorithm. See reading links in the section above for RSA and Extended Euclidean Algorithm.<br />
* Feb 1 - this week's quiz - number theory, see link above. Faculty candidate teaching demo. Continuing with number theory.<br />
* Jan 27 - Continuing with proofs in OneNote and BB. Introducing assignment h1. Taking the q4 logic quiz in the afternoon. Starting number theory (BB chapter 4).<br />
* Jan 20 - request to move the standard quiz day to be Wednesday. Nope, stick with Fridays.<br />
* Jan 20 - guest speaker for today, faculty candidate visiting today.<br />
* Jan 18 - reading assignment - Building Blocks chapters 3, 4.<br />
* Jan 18 - today's topic - Logic. See practice quiz above.<br />
* Jan 13 - q1 set so you can see your answers and the correct answers, and stats on the scores and total time taken are above. <br />
* Jan 13 - reading assignment - Building Blocks chapter 2.<br />
* Jan 13 - math notation, the graph questions. q1 math notation quiz. Continuing through math background, including material for q2 and q3 - see links above.<br />
* Jan 11 - note that q1 will be Friday, see above. In general for quizzes, no makeups, but you'll have a chance on the midterm to take it again.<br />
* Jan 11 - reading assignment - Building Blocks chapter 1. First quizzes - Friday 1-2pm.<br />
* Jan 11 - first day of class, syllabus and such. It is good for you to take notes.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
The catalog description for this course is: "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." The two main goals are (a) being able to reason about computation (mathematical objects and algorithms), (b) familiarity with the topics listed in the description which are important in later courses.<br />
<br />
'''Course Outline'''<br />
* We will start the course by following along in the order of ''Building Blocks for Theoretical Computer Science'', see link above.<br />
<br />
'''Learning Outcomes'''<br />
* Basic math - ability to use basic algebra, properties of numbers, rules of exponents and logarithms<br />
* Proofs - understanding of what a proof is, ability to use the following methods of proof as needed - direct proof / by construction, by contradiction, by induction, by decomposition<br />
* Logic - ability to use the rules of logic (truth tables, DeMorgan's laws, etc.) in arguments<br />
* Integers - can use the properties of the integers to write algorithms and reason about their correctness<br />
* Sets, relations, functions - can apply the definitions of these concepts in proofs<br />
* Graphs, trees - understanding of standard definitions related to graphs and trees, able to argue basic properties<br />
* Asymptotic resource analysis (big-O) - can apply the definitions of big-O notation to compare different running time formulae, to simplify expressions, and to determine the big-O running time of algorithms<br />
* Complexity theory - understanding of definitions of basic complexity classes (L, P, NP, PSPACE, EXP), understanding of canonical problems in each class, can reason about these complexity classes<br />
* Notions of infinity - understanding of difference between countably and uncountably infinite, can use these in proofs<br />
* Probability - knowledge of basic definitions and properties of discrete probability, can apply to the analysis of randomized algorithms and processes<br />
* Regular languages - understanding of DFAs, NFAs, regular expressions and ability to produce models for commonly encountered languages<br />
* General models of computation - understanding of Turing-complete models of computation (Turing machine, circuits, programming languages) and implications<br />
* Computability - can give arguments whether a given problem is computable or not (e.g., the halting problem)<br />
* Notation - proper use of math notation (sets, logic, functions, summations, proofs, etc.)<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''D'''<br />
* Pass- or higher achievement for ''all'' of the following<br />
* Hello unix lab (at least 2/2)<br />
* Math notation (at least 80%)<br />
* Math bases (at least 80%)<br />
* Truth table proof (at least 1.5/2)<br />
* Proof that a number is irrational (at least 1.5/2)<br />
* Euclidean algorithm - demo of running the algorithm (at least 1.5/2)<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''C''' <br />
* Pass or higher achievement for ''all'' of the above (at least 90% on quizzes, at least 2/2 on assignment problems)<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''B'''<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''A'''<br />
* In addition to the above...<br />
* At least 1 puzzle/challenge problem solved correctly (pass rating)<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_303&diff=3756CS 3032023-02-03T17:43:04Z<p>Jkinne: /* Announcements */</p>
<hr />
<div>CS 303 Discrete Structures and Computing Theory is taken by CS majors after CS 151. <br />
<br />
This page contains the syllabus for CS 303 and is used to keep track of assignments, etc. as well for the most recent offering (spring 2023). For announcements, click the link in the table of contents.<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_303<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TBD<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' WF 10-10:50am, 1-1:50pm in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Monday, May 1, 10-11:50am and/or Wednesday, May 3 1-2:50pm <br> <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. <br />
<br />
'''Prerequisites''' - C or higher in CS 151.<br />
<br />
'''CRN numbers''' - 11380 for the 001 face to face section, 12450 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use selections from the following free online sources.<br />
* '''Primary text for the beginning of the course''' - '''[https://mfleck.cs.illinois.edu/building-blocks/index-sp2020.html Building Blocks for Theoretical Computer Science]''' by Margaret M. Fleck<br />
* [https://courses.csail.mit.edu/6.042/spring18/mcs.pdf Mathematics for Computer Science] by Eric Lehman, F Thomson Leighton, and Albert R Meyer<br />
* [https://cglab.ca/~michiel/TheoryOfComputation/TheoryOfComputation.pdf Introduction to Theory of Computation] by Anil Maheshwari and Michiel Smid<br />
* Additional sources - as needed<br />
** [https://en.wikipedia.org/wiki/RSA_(cryptosystem)#Operation RSA Encryption (Operation)], [https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm Extended Euclidean Algorithm]<br />
** [https://en.wikipedia.org/wiki/Boolean_satisfiability_problem#3-satisfiability 3SAT NP-complete problem], [https://www.geeksforgeeks.org/proof-that-clique-decision-problem-is-np-complete/ Clique NP-complete problem], [https://cgi.csc.liv.ac.uk/~igor/COMP309/3CP.pdf 3 Coloring NP-complete problem]<br />
<br />
'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/Ei0RjIshxhlLmcwB-qhatPUBGDXtwXxc4O_-nVKPHoKrOw?e=yQKG51 CS 303 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.<br />
<br />
'''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 [https://teams.microsoft.com/l/team/19%3aFIaIH4p7m6BB3-VsZg5fx7SylggKoMt0rO7WHWqJbFk1%40thread.tacv2/conversations?groupId=6de93cd8-5594-4520-b014-7db43a7e9b4d&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 303 MS teams direct link]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
* '''q5 - [https://indstate.instructure.com/courses/12565/quizzes/231883 Number Theory]''' - that is the practice quiz. Feb 3, 1:25pm.<br />
* '''h1 - [[Truth table proofs]]''' - both assignments 1 and 2 listed there. For which logical identity and which logical fallacy you need to do, see the lecture from Jan 27 when this was shared on screen. Due Feb 3.<br />
* '''q4 - [https://indstate.instructure.com/courses/12565/quizzes/231878 Logic]''' - that is the practice quiz. Jan 27, 1:25pm. Score stats: max, median, min, average = 100, 75, 25, 69.79166667. Time to take the quiz stats: max, median, min, average = 30, 23, 5, 22.04166667.<br />
* '''q3 - [https://indstate.instructure.com/courses/12565/quizzes/231882 Miscellaneous Math]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 25.94444444, 92.50529101. Time to take the quiz stats: max, median, min, average = 13, 5, 2, 6.142857143.<br />
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231879 Math and Bases]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 66.66666667, 97.10144928. Time to take the quiz stats: max, median, min, average = 13, 5, 3, 6.173913043.<br />
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231880/take Math Notation]''' - that link is a practice quiz, the real one will be in our course in Canvas. See also [[Math for CS Review]] for a study guide of sorts. Open book, open internet, not "open other person". Jan 13 around 1:25pm (quiz will be 1:25-1:50pm). Score stats: max, median, min, average = 100, 100, 87.75510204, 98.4028394. Time to take the quiz stats: max, median, min, average = 22, 7, 5, 9.52173913.<br />
<br />
==Announcements==<br />
* Feb 15 - hw assignment - number theory, RSA, gcd.<br />
* Feb 3 - faculty candidate teaching demo in the morning. Number theory - RSA encryption, one of our favorite results, uses the extended Euclidean algorithm. See reading links in the section above for RSA and Extended Euclidean Algorithm.<br />
* Feb 1 - this week's quiz - number theory, see link above. Faculty candidate teaching demo. Continuing with number theory.<br />
* Jan 27 - Continuing with proofs in OneNote and BB. Introducing assignment h1. Taking the q4 logic quiz in the afternoon. Starting number theory (BB chapter 4).<br />
* Jan 20 - request to move the standard quiz day to be Wednesday. Nope, stick with Fridays.<br />
* Jan 20 - guest speaker for today, faculty candidate visiting today.<br />
* Jan 18 - reading assignment - Building Blocks chapters 3, 4.<br />
* Jan 18 - today's topic - Logic. See practice quiz above.<br />
* Jan 13 - q1 set so you can see your answers and the correct answers, and stats on the scores and total time taken are above. <br />
* Jan 13 - reading assignment - Building Blocks chapter 2.<br />
* Jan 13 - math notation, the graph questions. q1 math notation quiz. Continuing through math background, including material for q2 and q3 - see links above.<br />
* Jan 11 - note that q1 will be Friday, see above. In general for quizzes, no makeups, but you'll have a chance on the midterm to take it again.<br />
* Jan 11 - reading assignment - Building Blocks chapter 1. First quizzes - Friday 1-2pm.<br />
* Jan 11 - first day of class, syllabus and such. It is good for you to take notes.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
The catalog description for this course is: "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." The two main goals are (a) being able to reason about computation (mathematical objects and algorithms), (b) familiarity with the topics listed in the description which are important in later courses.<br />
<br />
'''Course Outline'''<br />
* We will start the course by following along in the order of ''Building Blocks for Theoretical Computer Science'', see link above.<br />
<br />
'''Learning Outcomes'''<br />
* Basic math - ability to use basic algebra, properties of numbers, rules of exponents and logarithms<br />
* Proofs - understanding of what a proof is, ability to use the following methods of proof as needed - direct proof / by construction, by contradiction, by induction, by decomposition<br />
* Logic - ability to use the rules of logic (truth tables, DeMorgan's laws, etc.) in arguments<br />
* Integers - can use the properties of the integers to write algorithms and reason about their correctness<br />
* Sets, relations, functions - can apply the definitions of these concepts in proofs<br />
* Graphs, trees - understanding of standard definitions related to graphs and trees, able to argue basic properties<br />
* Asymptotic resource analysis (big-O) - can apply the definitions of big-O notation to compare different running time formulae, to simplify expressions, and to determine the big-O running time of algorithms<br />
* Complexity theory - understanding of definitions of basic complexity classes (L, P, NP, PSPACE, EXP), understanding of canonical problems in each class, can reason about these complexity classes<br />
* Notions of infinity - understanding of difference between countably and uncountably infinite, can use these in proofs<br />
* Probability - knowledge of basic definitions and properties of discrete probability, can apply to the analysis of randomized algorithms and processes<br />
* Regular languages - understanding of DFAs, NFAs, regular expressions and ability to produce models for commonly encountered languages<br />
* General models of computation - understanding of Turing-complete models of computation (Turing machine, circuits, programming languages) and implications<br />
* Computability - can give arguments whether a given problem is computable or not (e.g., the halting problem)<br />
* Notation - proper use of math notation (sets, logic, functions, summations, proofs, etc.)<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''D'''<br />
* Pass- or higher achievement for ''all'' of the following<br />
* Hello unix lab (at least 2/2)<br />
* Math notation (at least 80%)<br />
* Math bases (at least 80%)<br />
* Truth table proof (at least 1.5/2)<br />
* Proof that a number is irrational (at least 1.5/2)<br />
* Euclidean algorithm - demo of running the algorithm (at least 1.5/2)<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''C''' <br />
* Pass or higher achievement for ''all'' of the above (at least 90% on quizzes, at least 2/2 on assignment problems)<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''B'''<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''A'''<br />
* In addition to the above...<br />
* At least 1 puzzle/challenge problem solved correctly (pass rating)<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_303&diff=3755CS 3032023-02-03T17:41:27Z<p>Jkinne: /* General Information */</p>
<hr />
<div>CS 303 Discrete Structures and Computing Theory is taken by CS majors after CS 151. <br />
<br />
This page contains the syllabus for CS 303 and is used to keep track of assignments, etc. as well for the most recent offering (spring 2023). For announcements, click the link in the table of contents.<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_303<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TBD<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' WF 10-10:50am, 1-1:50pm in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Monday, May 1, 10-11:50am and/or Wednesday, May 3 1-2:50pm <br> <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. <br />
<br />
'''Prerequisites''' - C or higher in CS 151.<br />
<br />
'''CRN numbers''' - 11380 for the 001 face to face section, 12450 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use selections from the following free online sources.<br />
* '''Primary text for the beginning of the course''' - '''[https://mfleck.cs.illinois.edu/building-blocks/index-sp2020.html Building Blocks for Theoretical Computer Science]''' by Margaret M. Fleck<br />
* [https://courses.csail.mit.edu/6.042/spring18/mcs.pdf Mathematics for Computer Science] by Eric Lehman, F Thomson Leighton, and Albert R Meyer<br />
* [https://cglab.ca/~michiel/TheoryOfComputation/TheoryOfComputation.pdf Introduction to Theory of Computation] by Anil Maheshwari and Michiel Smid<br />
* Additional sources - as needed<br />
** [https://en.wikipedia.org/wiki/RSA_(cryptosystem)#Operation RSA Encryption (Operation)], [https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm Extended Euclidean Algorithm]<br />
** [https://en.wikipedia.org/wiki/Boolean_satisfiability_problem#3-satisfiability 3SAT NP-complete problem], [https://www.geeksforgeeks.org/proof-that-clique-decision-problem-is-np-complete/ Clique NP-complete problem], [https://cgi.csc.liv.ac.uk/~igor/COMP309/3CP.pdf 3 Coloring NP-complete problem]<br />
<br />
'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/Ei0RjIshxhlLmcwB-qhatPUBGDXtwXxc4O_-nVKPHoKrOw?e=yQKG51 CS 303 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.<br />
<br />
'''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 [https://teams.microsoft.com/l/team/19%3aFIaIH4p7m6BB3-VsZg5fx7SylggKoMt0rO7WHWqJbFk1%40thread.tacv2/conversations?groupId=6de93cd8-5594-4520-b014-7db43a7e9b4d&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 303 MS teams direct link]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
* '''q5 - [https://indstate.instructure.com/courses/12565/quizzes/231883 Number Theory]''' - that is the practice quiz. Feb 3, 1:25pm.<br />
* '''h1 - [[Truth table proofs]]''' - both assignments 1 and 2 listed there. For which logical identity and which logical fallacy you need to do, see the lecture from Jan 27 when this was shared on screen. Due Feb 3.<br />
* '''q4 - [https://indstate.instructure.com/courses/12565/quizzes/231878 Logic]''' - that is the practice quiz. Jan 27, 1:25pm. Score stats: max, median, min, average = 100, 75, 25, 69.79166667. Time to take the quiz stats: max, median, min, average = 30, 23, 5, 22.04166667.<br />
* '''q3 - [https://indstate.instructure.com/courses/12565/quizzes/231882 Miscellaneous Math]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 25.94444444, 92.50529101. Time to take the quiz stats: max, median, min, average = 13, 5, 2, 6.142857143.<br />
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231879 Math and Bases]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 66.66666667, 97.10144928. Time to take the quiz stats: max, median, min, average = 13, 5, 3, 6.173913043.<br />
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231880/take Math Notation]''' - that link is a practice quiz, the real one will be in our course in Canvas. See also [[Math for CS Review]] for a study guide of sorts. Open book, open internet, not "open other person". Jan 13 around 1:25pm (quiz will be 1:25-1:50pm). Score stats: max, median, min, average = 100, 100, 87.75510204, 98.4028394. Time to take the quiz stats: max, median, min, average = 22, 7, 5, 9.52173913.<br />
<br />
==Announcements==<br />
* Feb 1 - this week's quiz - number theory, see link above. Faculty candidate teaching demo. Continuing with number theory.<br />
* Jan 27 - Continuing with proofs in OneNote and BB. Introducing assignment h1. Taking the q4 logic quiz in the afternoon. Starting number theory (BB chapter 4).<br />
* Jan 20 - request to move the standard quiz day to be Wednesday. Nope, stick with Fridays.<br />
* Jan 20 - guest speaker for today, faculty candidate visiting today.<br />
* Jan 18 - reading assignment - Building Blocks chapters 3, 4.<br />
* Jan 18 - today's topic - Logic. See practice quiz above.<br />
* Jan 13 - q1 set so you can see your answers and the correct answers, and stats on the scores and total time taken are above. <br />
* Jan 13 - reading assignment - Building Blocks chapter 2.<br />
* Jan 13 - math notation, the graph questions. q1 math notation quiz. Continuing through math background, including material for q2 and q3 - see links above.<br />
* Jan 11 - note that q1 will be Friday, see above. In general for quizzes, no makeups, but you'll have a chance on the midterm to take it again.<br />
* Jan 11 - reading assignment - Building Blocks chapter 1. First quizzes - Friday 1-2pm.<br />
* Jan 11 - first day of class, syllabus and such. It is good for you to take notes.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
The catalog description for this course is: "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." The two main goals are (a) being able to reason about computation (mathematical objects and algorithms), (b) familiarity with the topics listed in the description which are important in later courses.<br />
<br />
'''Course Outline'''<br />
* We will start the course by following along in the order of ''Building Blocks for Theoretical Computer Science'', see link above.<br />
<br />
'''Learning Outcomes'''<br />
* Basic math - ability to use basic algebra, properties of numbers, rules of exponents and logarithms<br />
* Proofs - understanding of what a proof is, ability to use the following methods of proof as needed - direct proof / by construction, by contradiction, by induction, by decomposition<br />
* Logic - ability to use the rules of logic (truth tables, DeMorgan's laws, etc.) in arguments<br />
* Integers - can use the properties of the integers to write algorithms and reason about their correctness<br />
* Sets, relations, functions - can apply the definitions of these concepts in proofs<br />
* Graphs, trees - understanding of standard definitions related to graphs and trees, able to argue basic properties<br />
* Asymptotic resource analysis (big-O) - can apply the definitions of big-O notation to compare different running time formulae, to simplify expressions, and to determine the big-O running time of algorithms<br />
* Complexity theory - understanding of definitions of basic complexity classes (L, P, NP, PSPACE, EXP), understanding of canonical problems in each class, can reason about these complexity classes<br />
* Notions of infinity - understanding of difference between countably and uncountably infinite, can use these in proofs<br />
* Probability - knowledge of basic definitions and properties of discrete probability, can apply to the analysis of randomized algorithms and processes<br />
* Regular languages - understanding of DFAs, NFAs, regular expressions and ability to produce models for commonly encountered languages<br />
* General models of computation - understanding of Turing-complete models of computation (Turing machine, circuits, programming languages) and implications<br />
* Computability - can give arguments whether a given problem is computable or not (e.g., the halting problem)<br />
* Notation - proper use of math notation (sets, logic, functions, summations, proofs, etc.)<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''D'''<br />
* Pass- or higher achievement for ''all'' of the following<br />
* Hello unix lab (at least 2/2)<br />
* Math notation (at least 80%)<br />
* Math bases (at least 80%)<br />
* Truth table proof (at least 1.5/2)<br />
* Proof that a number is irrational (at least 1.5/2)<br />
* Euclidean algorithm - demo of running the algorithm (at least 1.5/2)<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''C''' <br />
* Pass or higher achievement for ''all'' of the above (at least 90% on quizzes, at least 2/2 on assignment problems)<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''B'''<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''A'''<br />
* In addition to the above...<br />
* At least 1 puzzle/challenge problem solved correctly (pass rating)<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_500&diff=3754CS 5002023-02-03T02:02:04Z<p>Jkinne: /* Announcements */</p>
<hr />
<div>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. <br />
<br />
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.<br />
<br />
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).<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_500<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TR 9am-noon, MWF 2-3pm<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' MWF 11-11:50am in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Friday, May 5 10-11:50am <br> <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. <br />
<br />
'''Prerequisites''' - admission to the CS MS program or approval of instructor, should be a competent programmer in some programming language.<br />
<br />
'''CRN numbers''' - 11401 for the 001 face to face section, 12108 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use the following free online sources.<br />
* 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<br />
* 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<br />
* 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<br />
* Additional sources - as needed.<br />
<br />
'''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>.<br />
<br />
'''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<br />
[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]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
<br />
* '''q4''' - will be over Linux terminal commands and using the terminal.<br />
* '''h8_C''' - will be either chess game started in class, or another bunch of small C programs.<br />
* '''h7_C''' - will be either chess game started in class, or another bunch of small C programs.<br />
* '''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.<br />
* '''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.<br />
* '''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.<br />
* '''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.<br />
* '''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<br />
* '''h4 - [[Text Editors]] Terminal'''. Due Jan 13/18.<br />
* '''h3 - [[Hello Unix Lab]]'''. Due Jan 13/18.<br />
* '''h2 - [[CS Server - Terminal]]'''. Due Jan 13/18.<br />
* '''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.<br />
<br />
==Announcements==<br />
* Feb 3 - continuing with chess, next hw. Note the quiz score stats above. h6_C - nobody has submitted as of now, you should do so, remember that you should be turning in by the "preferred" due date as much as possible.<br />
* Feb 1 - retakes on q1, q2, q3. If you have any questions about the hw.<br />
* 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.<br />
* Jan 30 - questions on h6. introducing - chess game (will be a hw assignment).<br />
* Jan 27 - Finish loop_stdin.c, and continue on. Introducing assignment h6_C.<br />
* Jan 23 - quizzes q1, q2, q3.<br />
* Jan 20 - see the terminal stuff linked from [[Linux and CS Systems - Getting Started]]<br />
* Jan 20 - continuing with C examples, note that the quizzes q1-q3 will be Monday.<br />
* 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, ...).<br />
* Jan 13 - Introducing h5. Quizzes q1, q2, q3 in one week. Reading assignment - Essential C (all of it). See also - [[C Basics]]<br />
* 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.<br />
* Jan 11 - first day of class, syllabus, etc.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
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.<br />
<br />
'''Course Outline'''<br />
* Getting started - system setup, git, linux, bash, make, apache, math background, development on your personal computer.<br />
* C programming basics - operators, reserved words, data types, base systems, overflow.<br />
* C programming strings - manipulation of C strings.<br />
* C programming memory management - different types of memory in C, how to use them, pros and cons.<br />
* C programming style - good programming style for reliability, readability, extensibility, security.<br />
* 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.<br />
* 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.<br />
* Vocab - additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''Learning Outcomes'''<br />
* System setup - personal computer setup for both remote (connecting to CS server with terminal, sftp, X windows) and local development (editor, compiler).<br />
* Git - basic use of git for source code management.<br />
* Linux - proficient using the Linux terminal for development.<br />
* Bash - basic use of bash scripts for testing code.<br />
* Make - basic use of GNU make for compiling code.<br />
* Apache - able to post content to your CS accounts to be viewable over the web.<br />
* Math background - proficient in math background needed for data structures and algorithms.<br />
* Personal computer - is setup for development so you can do coursework from your home computer as well.<br />
* C programming - understanding of all language features, proficient in writing code using the most common, write code using good programming style.<br />
* Data structures - understanding of operations, efficiency, use cases, can write code in C for data structure operations.<br />
* Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the right algorithms to solve problems efficiently.<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''C - lowest passing grade in a grad course''' <br />
* Pass or higher achievement for ''all'' of the following<br />
* System setup, git, linux, bash, make, apache, math background, personal computer<br />
* C programming basics<br />
* Data structures basic understanding - arrays (stack and queue), linked lists (stack and queue), binary search trees, hash tables<br />
* Data structures programming - can write the code for methods for ''some'' of the above<br />
* Data structures programming - can use ''some'' of the above data structures to solve problems<br />
* Sorting algorithms - basic understanding of at least one slow and at least one efficient sorting algorithm<br />
* Sorting algorithms - can write the code for at least one sorting algorithm<br />
* Algorithm techniques - basic understanding of ''at least one'' greedy, divide and conquer, brute force, and dynamic programming algorithm.<br />
* Asymptotic resource usage - basic understanding, can use Jeff's rules of thumb in simplifying expressions<br />
<br />
'''B - satisfactory'''<br />
* In addition to the above...<br />
* Data structures programming - can write the code for methods for ''most'' of the "C grade" basic data structures<br />
* Data structures programming - can use ''most'' of the "C grade" basic data structures to solve problems<br />
* Data structures basic understanding - skip list, red black trees, heap, B tree<br />
* Sorting algorithms - can write the code for at least one slow and at least one efficient sorting algorithm<br />
* Sorting algorithms - basic understanding of multiple slow and multiple efficient sorting algorithms<br />
* Graph algorithms - basic understanding of the adjacency lists, adjacency matrices, graph algorithms DFS and BFS<br />
* 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<br />
<br />
'''A - good/excellent'''<br />
* In addition to the above...<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* Graph algorithms - can write the code for some of the "B level" graph algorithms<br />
* Graph algorithms - basic understanding of an MST algorithm and shortest path algorithm<br />
* Asymptotic resource usage - can apply the master theorem ''and'' recursion tree methods to recursive resource formulae<br />
* Integer algorithms - basic understanding of faster-than-obvious multiplication and exponentiation algorithms<br />
* Algorithm techniques - can write code for at least one algorithm for each of the "C level" algorithm techniques<br />
* Algorithm techniques - basic understanding of ''multiple'' algorithms for each of the "C level" algorithm techniques<br />
* Complexity theory - basic understanding of the definitions of L, P, NP, PSPACE, EXP and a few canonical problems in each<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.'''<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_500&diff=3753CS 5002023-02-03T02:01:36Z<p>Jkinne: /* Announcements */</p>
<hr />
<div>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. <br />
<br />
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.<br />
<br />
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).<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_500<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TR 9am-noon, MWF 2-3pm<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' MWF 11-11:50am in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Friday, May 5 10-11:50am <br> <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. <br />
<br />
'''Prerequisites''' - admission to the CS MS program or approval of instructor, should be a competent programmer in some programming language.<br />
<br />
'''CRN numbers''' - 11401 for the 001 face to face section, 12108 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use the following free online sources.<br />
* 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<br />
* 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<br />
* 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<br />
* Additional sources - as needed.<br />
<br />
'''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>.<br />
<br />
'''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<br />
[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]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
<br />
* '''q4''' - will be over Linux terminal commands and using the terminal.<br />
* '''h8_C''' - will be either chess game started in class, or another bunch of small C programs.<br />
* '''h7_C''' - will be either chess game started in class, or another bunch of small C programs.<br />
* '''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.<br />
* '''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.<br />
* '''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.<br />
* '''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.<br />
* '''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<br />
* '''h4 - [[Text Editors]] Terminal'''. Due Jan 13/18.<br />
* '''h3 - [[Hello Unix Lab]]'''. Due Jan 13/18.<br />
* '''h2 - [[CS Server - Terminal]]'''. Due Jan 13/18.<br />
* '''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.<br />
<br />
==Announcements==<br />
* Feb 3 - continuing with chess, next hw. Note the quiz score stats above. h6_C - nobody has submitted as of now, you should do so.<br />
* Feb 1 - retakes on q1, q2, q3. If you have any questions about the hw.<br />
* 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.<br />
* Jan 30 - questions on h6. introducing - chess game (will be a hw assignment).<br />
* Jan 27 - Finish loop_stdin.c, and continue on. Introducing assignment h6_C.<br />
* Jan 23 - quizzes q1, q2, q3.<br />
* Jan 20 - see the terminal stuff linked from [[Linux and CS Systems - Getting Started]]<br />
* Jan 20 - continuing with C examples, note that the quizzes q1-q3 will be Monday.<br />
* 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, ...).<br />
* Jan 13 - Introducing h5. Quizzes q1, q2, q3 in one week. Reading assignment - Essential C (all of it). See also - [[C Basics]]<br />
* 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.<br />
* Jan 11 - first day of class, syllabus, etc.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
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.<br />
<br />
'''Course Outline'''<br />
* Getting started - system setup, git, linux, bash, make, apache, math background, development on your personal computer.<br />
* C programming basics - operators, reserved words, data types, base systems, overflow.<br />
* C programming strings - manipulation of C strings.<br />
* C programming memory management - different types of memory in C, how to use them, pros and cons.<br />
* C programming style - good programming style for reliability, readability, extensibility, security.<br />
* 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.<br />
* 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.<br />
* Vocab - additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''Learning Outcomes'''<br />
* System setup - personal computer setup for both remote (connecting to CS server with terminal, sftp, X windows) and local development (editor, compiler).<br />
* Git - basic use of git for source code management.<br />
* Linux - proficient using the Linux terminal for development.<br />
* Bash - basic use of bash scripts for testing code.<br />
* Make - basic use of GNU make for compiling code.<br />
* Apache - able to post content to your CS accounts to be viewable over the web.<br />
* Math background - proficient in math background needed for data structures and algorithms.<br />
* Personal computer - is setup for development so you can do coursework from your home computer as well.<br />
* C programming - understanding of all language features, proficient in writing code using the most common, write code using good programming style.<br />
* Data structures - understanding of operations, efficiency, use cases, can write code in C for data structure operations.<br />
* Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the right algorithms to solve problems efficiently.<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''C - lowest passing grade in a grad course''' <br />
* Pass or higher achievement for ''all'' of the following<br />
* System setup, git, linux, bash, make, apache, math background, personal computer<br />
* C programming basics<br />
* Data structures basic understanding - arrays (stack and queue), linked lists (stack and queue), binary search trees, hash tables<br />
* Data structures programming - can write the code for methods for ''some'' of the above<br />
* Data structures programming - can use ''some'' of the above data structures to solve problems<br />
* Sorting algorithms - basic understanding of at least one slow and at least one efficient sorting algorithm<br />
* Sorting algorithms - can write the code for at least one sorting algorithm<br />
* Algorithm techniques - basic understanding of ''at least one'' greedy, divide and conquer, brute force, and dynamic programming algorithm.<br />
* Asymptotic resource usage - basic understanding, can use Jeff's rules of thumb in simplifying expressions<br />
<br />
'''B - satisfactory'''<br />
* In addition to the above...<br />
* Data structures programming - can write the code for methods for ''most'' of the "C grade" basic data structures<br />
* Data structures programming - can use ''most'' of the "C grade" basic data structures to solve problems<br />
* Data structures basic understanding - skip list, red black trees, heap, B tree<br />
* Sorting algorithms - can write the code for at least one slow and at least one efficient sorting algorithm<br />
* Sorting algorithms - basic understanding of multiple slow and multiple efficient sorting algorithms<br />
* Graph algorithms - basic understanding of the adjacency lists, adjacency matrices, graph algorithms DFS and BFS<br />
* 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<br />
<br />
'''A - good/excellent'''<br />
* In addition to the above...<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* Graph algorithms - can write the code for some of the "B level" graph algorithms<br />
* Graph algorithms - basic understanding of an MST algorithm and shortest path algorithm<br />
* Asymptotic resource usage - can apply the master theorem ''and'' recursion tree methods to recursive resource formulae<br />
* Integer algorithms - basic understanding of faster-than-obvious multiplication and exponentiation algorithms<br />
* Algorithm techniques - can write code for at least one algorithm for each of the "C level" algorithm techniques<br />
* Algorithm techniques - basic understanding of ''multiple'' algorithms for each of the "C level" algorithm techniques<br />
* Complexity theory - basic understanding of the definitions of L, P, NP, PSPACE, EXP and a few canonical problems in each<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.'''<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_510&diff=3752CS 5102023-02-02T18:42:16Z<p>Jkinne: /* Assignments */</p>
<hr />
<div>This page contains the syllabus for CS 510 and is used to keep track of assignments, etc. as well for the most recent offering (fall 2022).<br />
<br />
CS 510 is Fast Track Introduction to Programming. The course has no pre-reqs (can be taken by those with no prior CS or programming experience) and is meant to (a) get you programming (in python), and (b) get you ready to pass the admissions interview (python programming and basic algorithms / data structures). CS 510 counts as elective credit towards the MS degree. The course is meant for current ISU students in non-CS programs and for potential incoming CS MS students who need the course to get ready for the CS MS.<br />
<br />
For more information on applying to the CS MS program, see http://cs.indstate.edu/info/apply.html<br />
<br />
=Who Should Register=<br />
'''Current ISU Students: '''<br />
For ISU grad students who are in non-CS programs, if you do not have much programming experience, CS 510 is your best starting point in CS coursework. If you are already a competent programmer in some language, then you likely would want to start with either [[CS 500]] or [https://cs.indstate.edu/~lmay1/courses/#/courses/cs401/home CS 501]. CS 500 is C and data structures and algorithms, while CS 501 is python and data science.<br />
<br />
'''Non-ISU Students: '''<br />
''Domestic students who are not quite ready to start the CS MS (or just aren't sure if they want to do a full MS) can [https://www.indstate.edu/cgps/graduate/apply/non-degree-application apply to ISU as a Guest/Unclassifed student]'' and take the course either face to face or online. To do this, click on the Apply button, click to create an account if this is your first time starting an application at ISU, choose Graduate when prompted between Graduate or Undergraduate, for the Field of Interest choose "Guest Admission / Unclassified", and for Program of Study choose "Guest Admission (One Semester Only)". Choose the term that you plan to take the course, and complete the remaining required fields. <br />
<br />
''International students outside of the US'' are not in general allowed to take courses online inside of the US without being enrolled in a degree program. International persons who are in the US on a visa of some type might be allowed to take the course (in particular, those on F2 or H4 likely would be allowed). Those who cannot take courses at ISU can check back here for course info (sample quizzes, reading assignments, programming assignments, tutorials, etc.) that will be posted publicly throughout the fall 2022 term. <br />
<br />
For those with no or little prior programming and CS experience, you are highly recommended to take this course to build your programming skills (and for those interested in a CS MS, to get you ready to apply to the CS MS program).<br />
<br />
=General Course Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_510<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TR 9am-noon, MWF 2-3pm<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' TR 12:30-1:45 over Zoom (in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Tuesday May 2, 1-2:50pm<br> <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. <br />
<br />
'''Prerequisites''' - none.<br />
<br />
'''CRN numbers''' - 13236<br />
<br />
'''Required text'''<br />
* We will use the following free online sources.<br />
* For python - '''[https://runestone.academy/ns/books/published/thinkcspy/index.html How to Think Like a Computer Scientist] (aka "Think CS")''', [https://docs.python.org/3/ Python Official Documentation], [https://pandas.pydata.org/docs/ Pandas Official Documentation]<br />
* For data structures and algorithms - '''[https://www.tutorialspoint.com/data_structures_algorithms/index.htm TutorialsPoint Data Structures and Algorithms]''', and we might supplement with the texts used in [[CS 500]].<br />
* 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<br />
* Additional sources - as needed.<br />
<br />
'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/Esopw95fVJZJlZ-cySXQWs4B3ZLC_Vwclet7bWeTaWgD9Q?e=7YDH4i CS 510 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.<br />
<br />
'''Code from lectures''' - Some code from lectures will be at https://cs.indstate.edu/~cs510/<br />
<br />
'''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 [https://teams.microsoft.com/l/team/19%3aPmUdc-sEsyjfX0aajYlut2aMxPant_3kuzqinCDfEIE1%40thread.tacv2/conversations?groupId=55159713-d7fe-4c81-91d5-3ea970cd1b8a&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 510 MS teams direct link]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
Note - each assignment has two listed "due dates" - the first is when I recommend you getting it done. The second is the "last chance" due date - I won't be grading things after that due date.<br />
<br />
For assignments where there is a wiki page link as the assignment, go to the section on the wiki page "Assignment" to see what you need to do. These are assignments that are used each semester.<br />
<br />
* '''h11_python_errors''' - on the CS server. Due Feb 12, start working on it.<br />
* '''h10_python''' - on the CS server. Due Feb 12, start working on it.<br />
* '''h9_python''' - on the CS server. Due Feb 2/8.<br />
* '''h8_python''' - on the CS server. Due Jan 31/Feb 2.<br />
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231886 Python Operators and Expressions]''' - the link is to a practice quiz. Due by Feb 1.<br />
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231885 Python Keywords and Data Types]''' - the link is to a practice quiz. Due by Feb 1.<br />
* '''h7_python''' - on the CS server. Works similar to h5 and h6. Due Jan 26/31.<br />
* '''h6_python''' - on the CS server. Works similar to h5_linux. Due Jan 19/24.<br />
* '''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 17/19<br />
* '''h4 - [[Text Editors]] Terminal'''. Due Jan 12/17.<br />
* '''h3 - [[Hello Unix Lab]]'''. Due Jan 12/17.<br />
* '''h2 - [[CS Server - Terminal]]'''. Due Jan 12/17.<br />
* '''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 12/17.<br />
<br />
==Announcements==<br />
* Feb 7 - work on h10, h11, any questions? We'll start looking at data structures and algorithms.<br />
* Feb 2 - Comments on h8. Questions on h9. Introducing h10, h11.<br />
* Jan 31 - questions on h8, q1, q2? Loops, conditionals/selection. Classic example programs. Introducing h9.<br />
* Jan 26 - pdf's of practice quizzes. Quizzes will be Wednesday, 20 minutes each, in canvas.<br />
* Jan 26 - h7 - note the grading comments in the README. q1 and q2 dates? Introducing h8. Think CS exercises - look at their code. <br />
* Jan 24 - pick up where we left off on bit operations, so now you should be able to do both of the Python quizzes (not just copy/paste but be able to evaluate the expressions yourself as well).<br />
* Jan 24 - h6 - comments on your submissions (make your program so what it prints matches the sample transcript in the README). h7 sample transcripts.<br />
* Jan 19 - more python programs, let's try a few of the quiz questions.<br />
* Jan 19 - h6 - updated the README with additional instructions so the files are copied over properly when you hand them in.<br />
* Jan 17 - reading assignment - Think CS up through chapter 8<br />
* Jan 17 - examples of using all Python keywords and operators, big picture of the main parts of any programming language - basic data types, arrays or lists, loops, functions, selection, modules.<br />
* Jan 17 - note on reading Think CS - recommendation is to try all exercises and questions as you read. This is especially important for those who are not experienced programmers already. I may not test you on these, but you will only get the understanding you need by doing extra work like this.<br />
* Jan 17 - at some point we will have a quiz over using the Linux terminal. For now, you can use the Linux Terminal pages linked from [[Linux and CS Systems - Getting Started]] as a reference. <br />
* Jan 17 - note that we will be having quizzes over python basics probably next week. You can already try out the practice quizzes: [https://indstate.instructure.com/courses/12565/quizzes/231885 python keywords and data types], and [https://indstate.instructure.com/courses/12565/quizzes/231886 python operators and expressions].<br />
* Jan 12 - reading assignment - Think CS - chapter 1 (read through in one sitting), chapter 2 (get started). Note that there may be quizzes over the bold terms and concepts from Think CS (so pay attention to those, and take notes of things that are new to you).<br />
* Jan 12 - new hw assignment - h5, see today's lecture.<br />
* Jan 12 - reading assignment - [[Linux and CS Systems - Getting Started]] and the pages linked from there. We will have a quiz over the Linux commands next week.<br />
* Jan 10, 2023 - first day of class - how the class will work, class website, setting up your computer to get started.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
The catalog description for this course is: "A compressed introduction to programming in a specific language for the purpose of assisting student to become competent programmers in the language quickly." '''However''', the course is being changed so that it clearly is for an audience without much CS or programming background, and so that one of its outcomes is to help those interested in a CS MS to be able to pass the ISU CS MS admissions interview process.<br />
<br />
The following is the plan as we start the semester. As this is the first time for this course to be offered in this way, I will be updating this as we make our way through the term.<br />
<br />
'''Course Outline'''<br />
* Getting started - system setup, linux, math background, development on your personal computer.<br />
* Python programming basics - operators, reserved words, data types, base systems, overflow.<br />
* Python programming containers - strings, tuples, lists, dictionaries, sets.<br />
* Python programming object-oriented<br />
* Python programming style - good programming style for reliability, readability, extensibility, security.<br />
* Data structures - understanding/use of most important data structures - arrays, linked lists, binary search trees, hash tables, heaps. Implementation of some of these in Python.<br />
* Algorithms - understanding/use of some basic algorithms - sorting (various), binary/linear search (and uses) - including some algorithms that are each of - greedy, heuristic, randomized, brute force / backtracking.<br />
* Vocab - additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''Learning Outcomes'''<br />
* System setup - personal computer setup for both remote (connecting to CS server with terminal, sftp, X windows) and local development (editor, compiler/interpreter).<br />
* Linux - proficient using the Linux terminal for development.<br />
* Math background - proficient in math background needed for data structures and algorithms.<br />
* Personal computer - is setup for development so you can do coursework from your home computer as well.<br />
* Python programming - understanding of most language features, proficient in writing code using the most common, write code using good programming style.<br />
* Data structures - understanding of operations, efficiency, use cases, can use builtin python data structures and write python code for some data structures that are not included in python.<br />
* Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the algorithms to solve problems efficiently.<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''C - lowest passing grade in a grad course''' <br />
* Pass or higher achievement for ''all'' of the following<br />
* Terminal text editors - basic use<br />
* Linux terminal commands, files - basic use<br />
* Math for CS basics (base systems, rules of exponents, logs, logic)<br />
* Python - basic development in the terminal on the CS server<br />
* Python - basic development on your personal computer<br />
* Text editor - on your personal computer<br />
* File transfers - between personal computer and CS server<br />
* Python programming basics - knowledge of keywords, concepts, operators, evaluation of expressions<br />
* Python programming containers - knowledge of basic operations on tuples, lists, sets, dictionaries<br />
<br />
'''B - satisfactory'''<br />
* In addition to the above...<br />
* Object-oriented programming in python<br />
* Python programming style - good programming style for reliability, readability, extensibility, security.<br />
* Data structures - good understanding of how operations are implemented for - arrays, linked lists, binary search trees, hash tables, heaps. Able to properly "play computer" with these.<br />
* Algorithms - good understanding of several linear and binary search, several sorting algorithms (including one efficient one).<br />
* Vocab - some additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''A - good/excellent'''<br />
* In addition to the above...<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* Basic data structures from B level - can write python code to implement the data structures.<br />
* Algorithms - can write python code to implement linear and binary search, several sorting algorithms (including one efficient one).<br />
* Algorithms - good understanding of some algorithms for each of - greedy, heuristic, randomized, brute force / backtracking.<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.'''<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_510&diff=3751CS 5102023-02-02T18:40:49Z<p>Jkinne: /* Announcements */</p>
<hr />
<div>This page contains the syllabus for CS 510 and is used to keep track of assignments, etc. as well for the most recent offering (fall 2022).<br />
<br />
CS 510 is Fast Track Introduction to Programming. The course has no pre-reqs (can be taken by those with no prior CS or programming experience) and is meant to (a) get you programming (in python), and (b) get you ready to pass the admissions interview (python programming and basic algorithms / data structures). CS 510 counts as elective credit towards the MS degree. The course is meant for current ISU students in non-CS programs and for potential incoming CS MS students who need the course to get ready for the CS MS.<br />
<br />
For more information on applying to the CS MS program, see http://cs.indstate.edu/info/apply.html<br />
<br />
=Who Should Register=<br />
'''Current ISU Students: '''<br />
For ISU grad students who are in non-CS programs, if you do not have much programming experience, CS 510 is your best starting point in CS coursework. If you are already a competent programmer in some language, then you likely would want to start with either [[CS 500]] or [https://cs.indstate.edu/~lmay1/courses/#/courses/cs401/home CS 501]. CS 500 is C and data structures and algorithms, while CS 501 is python and data science.<br />
<br />
'''Non-ISU Students: '''<br />
''Domestic students who are not quite ready to start the CS MS (or just aren't sure if they want to do a full MS) can [https://www.indstate.edu/cgps/graduate/apply/non-degree-application apply to ISU as a Guest/Unclassifed student]'' and take the course either face to face or online. To do this, click on the Apply button, click to create an account if this is your first time starting an application at ISU, choose Graduate when prompted between Graduate or Undergraduate, for the Field of Interest choose "Guest Admission / Unclassified", and for Program of Study choose "Guest Admission (One Semester Only)". Choose the term that you plan to take the course, and complete the remaining required fields. <br />
<br />
''International students outside of the US'' are not in general allowed to take courses online inside of the US without being enrolled in a degree program. International persons who are in the US on a visa of some type might be allowed to take the course (in particular, those on F2 or H4 likely would be allowed). Those who cannot take courses at ISU can check back here for course info (sample quizzes, reading assignments, programming assignments, tutorials, etc.) that will be posted publicly throughout the fall 2022 term. <br />
<br />
For those with no or little prior programming and CS experience, you are highly recommended to take this course to build your programming skills (and for those interested in a CS MS, to get you ready to apply to the CS MS program).<br />
<br />
=General Course Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_510<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TR 9am-noon, MWF 2-3pm<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' TR 12:30-1:45 over Zoom (in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Tuesday May 2, 1-2:50pm<br> <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. <br />
<br />
'''Prerequisites''' - none.<br />
<br />
'''CRN numbers''' - 13236<br />
<br />
'''Required text'''<br />
* We will use the following free online sources.<br />
* For python - '''[https://runestone.academy/ns/books/published/thinkcspy/index.html How to Think Like a Computer Scientist] (aka "Think CS")''', [https://docs.python.org/3/ Python Official Documentation], [https://pandas.pydata.org/docs/ Pandas Official Documentation]<br />
* For data structures and algorithms - '''[https://www.tutorialspoint.com/data_structures_algorithms/index.htm TutorialsPoint Data Structures and Algorithms]''', and we might supplement with the texts used in [[CS 500]].<br />
* 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<br />
* Additional sources - as needed.<br />
<br />
'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/Esopw95fVJZJlZ-cySXQWs4B3ZLC_Vwclet7bWeTaWgD9Q?e=7YDH4i CS 510 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.<br />
<br />
'''Code from lectures''' - Some code from lectures will be at https://cs.indstate.edu/~cs510/<br />
<br />
'''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 [https://teams.microsoft.com/l/team/19%3aPmUdc-sEsyjfX0aajYlut2aMxPant_3kuzqinCDfEIE1%40thread.tacv2/conversations?groupId=55159713-d7fe-4c81-91d5-3ea970cd1b8a&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 510 MS teams direct link]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
Note - each assignment has two listed "due dates" - the first is when I recommend you getting it done. The second is the "last chance" due date - I won't be grading things after that due date.<br />
<br />
For assignments where there is a wiki page link as the assignment, go to the section on the wiki page "Assignment" to see what you need to do. These are assignments that are used each semester.<br />
<br />
* '''h9_python''' - on the CS server. Due Feb 2/8.<br />
* '''h8_python''' - on the CS server. Due Jan 31/Feb 2.<br />
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231886 Python Operators and Expressions]''' - the link is to a practice quiz. Due by Feb 1.<br />
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231885 Python Keywords and Data Types]''' - the link is to a practice quiz. Due by Feb 1.<br />
* '''h7_python''' - on the CS server. Works similar to h5 and h6. Due Jan 26/31.<br />
* '''h6_python''' - on the CS server. Works similar to h5_linux. Due Jan 19/24.<br />
* '''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 17/19<br />
* '''h4 - [[Text Editors]] Terminal'''. Due Jan 12/17.<br />
* '''h3 - [[Hello Unix Lab]]'''. Due Jan 12/17.<br />
* '''h2 - [[CS Server - Terminal]]'''. Due Jan 12/17.<br />
* '''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 12/17.<br />
<br />
==Announcements==<br />
* Feb 7 - work on h10, h11, any questions? We'll start looking at data structures and algorithms.<br />
* Feb 2 - Comments on h8. Questions on h9. Introducing h10, h11.<br />
* Jan 31 - questions on h8, q1, q2? Loops, conditionals/selection. Classic example programs. Introducing h9.<br />
* Jan 26 - pdf's of practice quizzes. Quizzes will be Wednesday, 20 minutes each, in canvas.<br />
* Jan 26 - h7 - note the grading comments in the README. q1 and q2 dates? Introducing h8. Think CS exercises - look at their code. <br />
* Jan 24 - pick up where we left off on bit operations, so now you should be able to do both of the Python quizzes (not just copy/paste but be able to evaluate the expressions yourself as well).<br />
* Jan 24 - h6 - comments on your submissions (make your program so what it prints matches the sample transcript in the README). h7 sample transcripts.<br />
* Jan 19 - more python programs, let's try a few of the quiz questions.<br />
* Jan 19 - h6 - updated the README with additional instructions so the files are copied over properly when you hand them in.<br />
* Jan 17 - reading assignment - Think CS up through chapter 8<br />
* Jan 17 - examples of using all Python keywords and operators, big picture of the main parts of any programming language - basic data types, arrays or lists, loops, functions, selection, modules.<br />
* Jan 17 - note on reading Think CS - recommendation is to try all exercises and questions as you read. This is especially important for those who are not experienced programmers already. I may not test you on these, but you will only get the understanding you need by doing extra work like this.<br />
* Jan 17 - at some point we will have a quiz over using the Linux terminal. For now, you can use the Linux Terminal pages linked from [[Linux and CS Systems - Getting Started]] as a reference. <br />
* Jan 17 - note that we will be having quizzes over python basics probably next week. You can already try out the practice quizzes: [https://indstate.instructure.com/courses/12565/quizzes/231885 python keywords and data types], and [https://indstate.instructure.com/courses/12565/quizzes/231886 python operators and expressions].<br />
* Jan 12 - reading assignment - Think CS - chapter 1 (read through in one sitting), chapter 2 (get started). Note that there may be quizzes over the bold terms and concepts from Think CS (so pay attention to those, and take notes of things that are new to you).<br />
* Jan 12 - new hw assignment - h5, see today's lecture.<br />
* Jan 12 - reading assignment - [[Linux and CS Systems - Getting Started]] and the pages linked from there. We will have a quiz over the Linux commands next week.<br />
* Jan 10, 2023 - first day of class - how the class will work, class website, setting up your computer to get started.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
The catalog description for this course is: "A compressed introduction to programming in a specific language for the purpose of assisting student to become competent programmers in the language quickly." '''However''', the course is being changed so that it clearly is for an audience without much CS or programming background, and so that one of its outcomes is to help those interested in a CS MS to be able to pass the ISU CS MS admissions interview process.<br />
<br />
The following is the plan as we start the semester. As this is the first time for this course to be offered in this way, I will be updating this as we make our way through the term.<br />
<br />
'''Course Outline'''<br />
* Getting started - system setup, linux, math background, development on your personal computer.<br />
* Python programming basics - operators, reserved words, data types, base systems, overflow.<br />
* Python programming containers - strings, tuples, lists, dictionaries, sets.<br />
* Python programming object-oriented<br />
* Python programming style - good programming style for reliability, readability, extensibility, security.<br />
* Data structures - understanding/use of most important data structures - arrays, linked lists, binary search trees, hash tables, heaps. Implementation of some of these in Python.<br />
* Algorithms - understanding/use of some basic algorithms - sorting (various), binary/linear search (and uses) - including some algorithms that are each of - greedy, heuristic, randomized, brute force / backtracking.<br />
* Vocab - additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''Learning Outcomes'''<br />
* System setup - personal computer setup for both remote (connecting to CS server with terminal, sftp, X windows) and local development (editor, compiler/interpreter).<br />
* Linux - proficient using the Linux terminal for development.<br />
* Math background - proficient in math background needed for data structures and algorithms.<br />
* Personal computer - is setup for development so you can do coursework from your home computer as well.<br />
* Python programming - understanding of most language features, proficient in writing code using the most common, write code using good programming style.<br />
* Data structures - understanding of operations, efficiency, use cases, can use builtin python data structures and write python code for some data structures that are not included in python.<br />
* Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the algorithms to solve problems efficiently.<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''C - lowest passing grade in a grad course''' <br />
* Pass or higher achievement for ''all'' of the following<br />
* Terminal text editors - basic use<br />
* Linux terminal commands, files - basic use<br />
* Math for CS basics (base systems, rules of exponents, logs, logic)<br />
* Python - basic development in the terminal on the CS server<br />
* Python - basic development on your personal computer<br />
* Text editor - on your personal computer<br />
* File transfers - between personal computer and CS server<br />
* Python programming basics - knowledge of keywords, concepts, operators, evaluation of expressions<br />
* Python programming containers - knowledge of basic operations on tuples, lists, sets, dictionaries<br />
<br />
'''B - satisfactory'''<br />
* In addition to the above...<br />
* Object-oriented programming in python<br />
* Python programming style - good programming style for reliability, readability, extensibility, security.<br />
* Data structures - good understanding of how operations are implemented for - arrays, linked lists, binary search trees, hash tables, heaps. Able to properly "play computer" with these.<br />
* Algorithms - good understanding of several linear and binary search, several sorting algorithms (including one efficient one).<br />
* Vocab - some additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''A - good/excellent'''<br />
* In addition to the above...<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* Basic data structures from B level - can write python code to implement the data structures.<br />
* Algorithms - can write python code to implement linear and binary search, several sorting algorithms (including one efficient one).<br />
* Algorithms - good understanding of some algorithms for each of - greedy, heuristic, randomized, brute force / backtracking.<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.'''<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_510&diff=3750CS 5102023-02-02T16:57:14Z<p>Jkinne: /* Announcements */</p>
<hr />
<div>This page contains the syllabus for CS 510 and is used to keep track of assignments, etc. as well for the most recent offering (fall 2022).<br />
<br />
CS 510 is Fast Track Introduction to Programming. The course has no pre-reqs (can be taken by those with no prior CS or programming experience) and is meant to (a) get you programming (in python), and (b) get you ready to pass the admissions interview (python programming and basic algorithms / data structures). CS 510 counts as elective credit towards the MS degree. The course is meant for current ISU students in non-CS programs and for potential incoming CS MS students who need the course to get ready for the CS MS.<br />
<br />
For more information on applying to the CS MS program, see http://cs.indstate.edu/info/apply.html<br />
<br />
=Who Should Register=<br />
'''Current ISU Students: '''<br />
For ISU grad students who are in non-CS programs, if you do not have much programming experience, CS 510 is your best starting point in CS coursework. If you are already a competent programmer in some language, then you likely would want to start with either [[CS 500]] or [https://cs.indstate.edu/~lmay1/courses/#/courses/cs401/home CS 501]. CS 500 is C and data structures and algorithms, while CS 501 is python and data science.<br />
<br />
'''Non-ISU Students: '''<br />
''Domestic students who are not quite ready to start the CS MS (or just aren't sure if they want to do a full MS) can [https://www.indstate.edu/cgps/graduate/apply/non-degree-application apply to ISU as a Guest/Unclassifed student]'' and take the course either face to face or online. To do this, click on the Apply button, click to create an account if this is your first time starting an application at ISU, choose Graduate when prompted between Graduate or Undergraduate, for the Field of Interest choose "Guest Admission / Unclassified", and for Program of Study choose "Guest Admission (One Semester Only)". Choose the term that you plan to take the course, and complete the remaining required fields. <br />
<br />
''International students outside of the US'' are not in general allowed to take courses online inside of the US without being enrolled in a degree program. International persons who are in the US on a visa of some type might be allowed to take the course (in particular, those on F2 or H4 likely would be allowed). Those who cannot take courses at ISU can check back here for course info (sample quizzes, reading assignments, programming assignments, tutorials, etc.) that will be posted publicly throughout the fall 2022 term. <br />
<br />
For those with no or little prior programming and CS experience, you are highly recommended to take this course to build your programming skills (and for those interested in a CS MS, to get you ready to apply to the CS MS program).<br />
<br />
=General Course Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_510<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TR 9am-noon, MWF 2-3pm<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' TR 12:30-1:45 over Zoom (in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Tuesday May 2, 1-2:50pm<br> <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. <br />
<br />
'''Prerequisites''' - none.<br />
<br />
'''CRN numbers''' - 13236<br />
<br />
'''Required text'''<br />
* We will use the following free online sources.<br />
* For python - '''[https://runestone.academy/ns/books/published/thinkcspy/index.html How to Think Like a Computer Scientist] (aka "Think CS")''', [https://docs.python.org/3/ Python Official Documentation], [https://pandas.pydata.org/docs/ Pandas Official Documentation]<br />
* For data structures and algorithms - '''[https://www.tutorialspoint.com/data_structures_algorithms/index.htm TutorialsPoint Data Structures and Algorithms]''', and we might supplement with the texts used in [[CS 500]].<br />
* 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<br />
* Additional sources - as needed.<br />
<br />
'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/Esopw95fVJZJlZ-cySXQWs4B3ZLC_Vwclet7bWeTaWgD9Q?e=7YDH4i CS 510 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.<br />
<br />
'''Code from lectures''' - Some code from lectures will be at https://cs.indstate.edu/~cs510/<br />
<br />
'''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 [https://teams.microsoft.com/l/team/19%3aPmUdc-sEsyjfX0aajYlut2aMxPant_3kuzqinCDfEIE1%40thread.tacv2/conversations?groupId=55159713-d7fe-4c81-91d5-3ea970cd1b8a&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 510 MS teams direct link]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
Note - each assignment has two listed "due dates" - the first is when I recommend you getting it done. The second is the "last chance" due date - I won't be grading things after that due date.<br />
<br />
For assignments where there is a wiki page link as the assignment, go to the section on the wiki page "Assignment" to see what you need to do. These are assignments that are used each semester.<br />
<br />
* '''h9_python''' - on the CS server. Due Feb 2/8.<br />
* '''h8_python''' - on the CS server. Due Jan 31/Feb 2.<br />
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231886 Python Operators and Expressions]''' - the link is to a practice quiz. Due by Feb 1.<br />
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231885 Python Keywords and Data Types]''' - the link is to a practice quiz. Due by Feb 1.<br />
* '''h7_python''' - on the CS server. Works similar to h5 and h6. Due Jan 26/31.<br />
* '''h6_python''' - on the CS server. Works similar to h5_linux. Due Jan 19/24.<br />
* '''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 17/19<br />
* '''h4 - [[Text Editors]] Terminal'''. Due Jan 12/17.<br />
* '''h3 - [[Hello Unix Lab]]'''. Due Jan 12/17.<br />
* '''h2 - [[CS Server - Terminal]]'''. Due Jan 12/17.<br />
* '''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 12/17.<br />
<br />
==Announcements==<br />
* Feb 2 - Comments on h8. Questions on h9. Introducing h10, h11.<br />
* Jan 31 - questions on h8, q1, q2? Loops, conditionals/selection. Classic example programs. Introducing h9.<br />
* Jan 26 - pdf's of practice quizzes. Quizzes will be Wednesday, 20 minutes each, in canvas.<br />
* Jan 26 - h7 - note the grading comments in the README. q1 and q2 dates? Introducing h8. Think CS exercises - look at their code. <br />
* Jan 24 - pick up where we left off on bit operations, so now you should be able to do both of the Python quizzes (not just copy/paste but be able to evaluate the expressions yourself as well).<br />
* Jan 24 - h6 - comments on your submissions (make your program so what it prints matches the sample transcript in the README). h7 sample transcripts.<br />
* Jan 19 - more python programs, let's try a few of the quiz questions.<br />
* Jan 19 - h6 - updated the README with additional instructions so the files are copied over properly when you hand them in.<br />
* Jan 17 - reading assignment - Think CS up through chapter 8<br />
* Jan 17 - examples of using all Python keywords and operators, big picture of the main parts of any programming language - basic data types, arrays or lists, loops, functions, selection, modules.<br />
* Jan 17 - note on reading Think CS - recommendation is to try all exercises and questions as you read. This is especially important for those who are not experienced programmers already. I may not test you on these, but you will only get the understanding you need by doing extra work like this.<br />
* Jan 17 - at some point we will have a quiz over using the Linux terminal. For now, you can use the Linux Terminal pages linked from [[Linux and CS Systems - Getting Started]] as a reference. <br />
* Jan 17 - note that we will be having quizzes over python basics probably next week. You can already try out the practice quizzes: [https://indstate.instructure.com/courses/12565/quizzes/231885 python keywords and data types], and [https://indstate.instructure.com/courses/12565/quizzes/231886 python operators and expressions].<br />
* Jan 12 - reading assignment - Think CS - chapter 1 (read through in one sitting), chapter 2 (get started). Note that there may be quizzes over the bold terms and concepts from Think CS (so pay attention to those, and take notes of things that are new to you).<br />
* Jan 12 - new hw assignment - h5, see today's lecture.<br />
* Jan 12 - reading assignment - [[Linux and CS Systems - Getting Started]] and the pages linked from there. We will have a quiz over the Linux commands next week.<br />
* Jan 10, 2023 - first day of class - how the class will work, class website, setting up your computer to get started.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
The catalog description for this course is: "A compressed introduction to programming in a specific language for the purpose of assisting student to become competent programmers in the language quickly." '''However''', the course is being changed so that it clearly is for an audience without much CS or programming background, and so that one of its outcomes is to help those interested in a CS MS to be able to pass the ISU CS MS admissions interview process.<br />
<br />
The following is the plan as we start the semester. As this is the first time for this course to be offered in this way, I will be updating this as we make our way through the term.<br />
<br />
'''Course Outline'''<br />
* Getting started - system setup, linux, math background, development on your personal computer.<br />
* Python programming basics - operators, reserved words, data types, base systems, overflow.<br />
* Python programming containers - strings, tuples, lists, dictionaries, sets.<br />
* Python programming object-oriented<br />
* Python programming style - good programming style for reliability, readability, extensibility, security.<br />
* Data structures - understanding/use of most important data structures - arrays, linked lists, binary search trees, hash tables, heaps. Implementation of some of these in Python.<br />
* Algorithms - understanding/use of some basic algorithms - sorting (various), binary/linear search (and uses) - including some algorithms that are each of - greedy, heuristic, randomized, brute force / backtracking.<br />
* Vocab - additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''Learning Outcomes'''<br />
* System setup - personal computer setup for both remote (connecting to CS server with terminal, sftp, X windows) and local development (editor, compiler/interpreter).<br />
* Linux - proficient using the Linux terminal for development.<br />
* Math background - proficient in math background needed for data structures and algorithms.<br />
* Personal computer - is setup for development so you can do coursework from your home computer as well.<br />
* Python programming - understanding of most language features, proficient in writing code using the most common, write code using good programming style.<br />
* Data structures - understanding of operations, efficiency, use cases, can use builtin python data structures and write python code for some data structures that are not included in python.<br />
* Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the algorithms to solve problems efficiently.<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''C - lowest passing grade in a grad course''' <br />
* Pass or higher achievement for ''all'' of the following<br />
* Terminal text editors - basic use<br />
* Linux terminal commands, files - basic use<br />
* Math for CS basics (base systems, rules of exponents, logs, logic)<br />
* Python - basic development in the terminal on the CS server<br />
* Python - basic development on your personal computer<br />
* Text editor - on your personal computer<br />
* File transfers - between personal computer and CS server<br />
* Python programming basics - knowledge of keywords, concepts, operators, evaluation of expressions<br />
* Python programming containers - knowledge of basic operations on tuples, lists, sets, dictionaries<br />
<br />
'''B - satisfactory'''<br />
* In addition to the above...<br />
* Object-oriented programming in python<br />
* Python programming style - good programming style for reliability, readability, extensibility, security.<br />
* Data structures - good understanding of how operations are implemented for - arrays, linked lists, binary search trees, hash tables, heaps. Able to properly "play computer" with these.<br />
* Algorithms - good understanding of several linear and binary search, several sorting algorithms (including one efficient one).<br />
* Vocab - some additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''A - good/excellent'''<br />
* In addition to the above...<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* Basic data structures from B level - can write python code to implement the data structures.<br />
* Algorithms - can write python code to implement linear and binary search, several sorting algorithms (including one efficient one).<br />
* Algorithms - good understanding of some algorithms for each of - greedy, heuristic, randomized, brute force / backtracking.<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.'''<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_510&diff=3749CS 5102023-02-02T16:30:26Z<p>Jkinne: /* Announcements */</p>
<hr />
<div>This page contains the syllabus for CS 510 and is used to keep track of assignments, etc. as well for the most recent offering (fall 2022).<br />
<br />
CS 510 is Fast Track Introduction to Programming. The course has no pre-reqs (can be taken by those with no prior CS or programming experience) and is meant to (a) get you programming (in python), and (b) get you ready to pass the admissions interview (python programming and basic algorithms / data structures). CS 510 counts as elective credit towards the MS degree. The course is meant for current ISU students in non-CS programs and for potential incoming CS MS students who need the course to get ready for the CS MS.<br />
<br />
For more information on applying to the CS MS program, see http://cs.indstate.edu/info/apply.html<br />
<br />
=Who Should Register=<br />
'''Current ISU Students: '''<br />
For ISU grad students who are in non-CS programs, if you do not have much programming experience, CS 510 is your best starting point in CS coursework. If you are already a competent programmer in some language, then you likely would want to start with either [[CS 500]] or [https://cs.indstate.edu/~lmay1/courses/#/courses/cs401/home CS 501]. CS 500 is C and data structures and algorithms, while CS 501 is python and data science.<br />
<br />
'''Non-ISU Students: '''<br />
''Domestic students who are not quite ready to start the CS MS (or just aren't sure if they want to do a full MS) can [https://www.indstate.edu/cgps/graduate/apply/non-degree-application apply to ISU as a Guest/Unclassifed student]'' and take the course either face to face or online. To do this, click on the Apply button, click to create an account if this is your first time starting an application at ISU, choose Graduate when prompted between Graduate or Undergraduate, for the Field of Interest choose "Guest Admission / Unclassified", and for Program of Study choose "Guest Admission (One Semester Only)". Choose the term that you plan to take the course, and complete the remaining required fields. <br />
<br />
''International students outside of the US'' are not in general allowed to take courses online inside of the US without being enrolled in a degree program. International persons who are in the US on a visa of some type might be allowed to take the course (in particular, those on F2 or H4 likely would be allowed). Those who cannot take courses at ISU can check back here for course info (sample quizzes, reading assignments, programming assignments, tutorials, etc.) that will be posted publicly throughout the fall 2022 term. <br />
<br />
For those with no or little prior programming and CS experience, you are highly recommended to take this course to build your programming skills (and for those interested in a CS MS, to get you ready to apply to the CS MS program).<br />
<br />
=General Course Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_510<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TR 9am-noon, MWF 2-3pm<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' TR 12:30-1:45 over Zoom (in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Tuesday May 2, 1-2:50pm<br> <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. <br />
<br />
'''Prerequisites''' - none.<br />
<br />
'''CRN numbers''' - 13236<br />
<br />
'''Required text'''<br />
* We will use the following free online sources.<br />
* For python - '''[https://runestone.academy/ns/books/published/thinkcspy/index.html How to Think Like a Computer Scientist] (aka "Think CS")''', [https://docs.python.org/3/ Python Official Documentation], [https://pandas.pydata.org/docs/ Pandas Official Documentation]<br />
* For data structures and algorithms - '''[https://www.tutorialspoint.com/data_structures_algorithms/index.htm TutorialsPoint Data Structures and Algorithms]''', and we might supplement with the texts used in [[CS 500]].<br />
* 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<br />
* Additional sources - as needed.<br />
<br />
'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/Esopw95fVJZJlZ-cySXQWs4B3ZLC_Vwclet7bWeTaWgD9Q?e=7YDH4i CS 510 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.<br />
<br />
'''Code from lectures''' - Some code from lectures will be at https://cs.indstate.edu/~cs510/<br />
<br />
'''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 [https://teams.microsoft.com/l/team/19%3aPmUdc-sEsyjfX0aajYlut2aMxPant_3kuzqinCDfEIE1%40thread.tacv2/conversations?groupId=55159713-d7fe-4c81-91d5-3ea970cd1b8a&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 510 MS teams direct link]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
Note - each assignment has two listed "due dates" - the first is when I recommend you getting it done. The second is the "last chance" due date - I won't be grading things after that due date.<br />
<br />
For assignments where there is a wiki page link as the assignment, go to the section on the wiki page "Assignment" to see what you need to do. These are assignments that are used each semester.<br />
<br />
* '''h9_python''' - on the CS server. Due Feb 2/8.<br />
* '''h8_python''' - on the CS server. Due Jan 31/Feb 2.<br />
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231886 Python Operators and Expressions]''' - the link is to a practice quiz. Due by Feb 1.<br />
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231885 Python Keywords and Data Types]''' - the link is to a practice quiz. Due by Feb 1.<br />
* '''h7_python''' - on the CS server. Works similar to h5 and h6. Due Jan 26/31.<br />
* '''h6_python''' - on the CS server. Works similar to h5_linux. Due Jan 19/24.<br />
* '''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 17/19<br />
* '''h4 - [[Text Editors]] Terminal'''. Due Jan 12/17.<br />
* '''h3 - [[Hello Unix Lab]]'''. Due Jan 12/17.<br />
* '''h2 - [[CS Server - Terminal]]'''. Due Jan 12/17.<br />
* '''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 12/17.<br />
<br />
==Announcements==<br />
* Feb 2 - <br />
* Jan 31 - questions on h8, q1, q2? Loops, conditionals/selection. Classic example programs. Introducing h9.<br />
* Jan 26 - pdf's of practice quizzes. Quizzes will be Wednesday, 20 minutes each, in canvas.<br />
* Jan 26 - h7 - note the grading comments in the README. q1 and q2 dates? Introducing h8. Think CS exercises - look at their code. <br />
* Jan 24 - pick up where we left off on bit operations, so now you should be able to do both of the Python quizzes (not just copy/paste but be able to evaluate the expressions yourself as well).<br />
* Jan 24 - h6 - comments on your submissions (make your program so what it prints matches the sample transcript in the README). h7 sample transcripts.<br />
* Jan 19 - more python programs, let's try a few of the quiz questions.<br />
* Jan 19 - h6 - updated the README with additional instructions so the files are copied over properly when you hand them in.<br />
* Jan 17 - reading assignment - Think CS up through chapter 8<br />
* Jan 17 - examples of using all Python keywords and operators, big picture of the main parts of any programming language - basic data types, arrays or lists, loops, functions, selection, modules.<br />
* Jan 17 - note on reading Think CS - recommendation is to try all exercises and questions as you read. This is especially important for those who are not experienced programmers already. I may not test you on these, but you will only get the understanding you need by doing extra work like this.<br />
* Jan 17 - at some point we will have a quiz over using the Linux terminal. For now, you can use the Linux Terminal pages linked from [[Linux and CS Systems - Getting Started]] as a reference. <br />
* Jan 17 - note that we will be having quizzes over python basics probably next week. You can already try out the practice quizzes: [https://indstate.instructure.com/courses/12565/quizzes/231885 python keywords and data types], and [https://indstate.instructure.com/courses/12565/quizzes/231886 python operators and expressions].<br />
* Jan 12 - reading assignment - Think CS - chapter 1 (read through in one sitting), chapter 2 (get started). Note that there may be quizzes over the bold terms and concepts from Think CS (so pay attention to those, and take notes of things that are new to you).<br />
* Jan 12 - new hw assignment - h5, see today's lecture.<br />
* Jan 12 - reading assignment - [[Linux and CS Systems - Getting Started]] and the pages linked from there. We will have a quiz over the Linux commands next week.<br />
* Jan 10, 2023 - first day of class - how the class will work, class website, setting up your computer to get started.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
The catalog description for this course is: "A compressed introduction to programming in a specific language for the purpose of assisting student to become competent programmers in the language quickly." '''However''', the course is being changed so that it clearly is for an audience without much CS or programming background, and so that one of its outcomes is to help those interested in a CS MS to be able to pass the ISU CS MS admissions interview process.<br />
<br />
The following is the plan as we start the semester. As this is the first time for this course to be offered in this way, I will be updating this as we make our way through the term.<br />
<br />
'''Course Outline'''<br />
* Getting started - system setup, linux, math background, development on your personal computer.<br />
* Python programming basics - operators, reserved words, data types, base systems, overflow.<br />
* Python programming containers - strings, tuples, lists, dictionaries, sets.<br />
* Python programming object-oriented<br />
* Python programming style - good programming style for reliability, readability, extensibility, security.<br />
* Data structures - understanding/use of most important data structures - arrays, linked lists, binary search trees, hash tables, heaps. Implementation of some of these in Python.<br />
* Algorithms - understanding/use of some basic algorithms - sorting (various), binary/linear search (and uses) - including some algorithms that are each of - greedy, heuristic, randomized, brute force / backtracking.<br />
* Vocab - additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''Learning Outcomes'''<br />
* System setup - personal computer setup for both remote (connecting to CS server with terminal, sftp, X windows) and local development (editor, compiler/interpreter).<br />
* Linux - proficient using the Linux terminal for development.<br />
* Math background - proficient in math background needed for data structures and algorithms.<br />
* Personal computer - is setup for development so you can do coursework from your home computer as well.<br />
* Python programming - understanding of most language features, proficient in writing code using the most common, write code using good programming style.<br />
* Data structures - understanding of operations, efficiency, use cases, can use builtin python data structures and write python code for some data structures that are not included in python.<br />
* Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the algorithms to solve problems efficiently.<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''C - lowest passing grade in a grad course''' <br />
* Pass or higher achievement for ''all'' of the following<br />
* Terminal text editors - basic use<br />
* Linux terminal commands, files - basic use<br />
* Math for CS basics (base systems, rules of exponents, logs, logic)<br />
* Python - basic development in the terminal on the CS server<br />
* Python - basic development on your personal computer<br />
* Text editor - on your personal computer<br />
* File transfers - between personal computer and CS server<br />
* Python programming basics - knowledge of keywords, concepts, operators, evaluation of expressions<br />
* Python programming containers - knowledge of basic operations on tuples, lists, sets, dictionaries<br />
<br />
'''B - satisfactory'''<br />
* In addition to the above...<br />
* Object-oriented programming in python<br />
* Python programming style - good programming style for reliability, readability, extensibility, security.<br />
* Data structures - good understanding of how operations are implemented for - arrays, linked lists, binary search trees, hash tables, heaps. Able to properly "play computer" with these.<br />
* Algorithms - good understanding of several linear and binary search, several sorting algorithms (including one efficient one).<br />
* Vocab - some additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''A - good/excellent'''<br />
* In addition to the above...<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* Basic data structures from B level - can write python code to implement the data structures.<br />
* Algorithms - can write python code to implement linear and binary search, several sorting algorithms (including one efficient one).<br />
* Algorithms - good understanding of some algorithms for each of - greedy, heuristic, randomized, brute force / backtracking.<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.'''<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_510&diff=3748CS 5102023-02-02T13:51:00Z<p>Jkinne: /* Assignments */</p>
<hr />
<div>This page contains the syllabus for CS 510 and is used to keep track of assignments, etc. as well for the most recent offering (fall 2022).<br />
<br />
CS 510 is Fast Track Introduction to Programming. The course has no pre-reqs (can be taken by those with no prior CS or programming experience) and is meant to (a) get you programming (in python), and (b) get you ready to pass the admissions interview (python programming and basic algorithms / data structures). CS 510 counts as elective credit towards the MS degree. The course is meant for current ISU students in non-CS programs and for potential incoming CS MS students who need the course to get ready for the CS MS.<br />
<br />
For more information on applying to the CS MS program, see http://cs.indstate.edu/info/apply.html<br />
<br />
=Who Should Register=<br />
'''Current ISU Students: '''<br />
For ISU grad students who are in non-CS programs, if you do not have much programming experience, CS 510 is your best starting point in CS coursework. If you are already a competent programmer in some language, then you likely would want to start with either [[CS 500]] or [https://cs.indstate.edu/~lmay1/courses/#/courses/cs401/home CS 501]. CS 500 is C and data structures and algorithms, while CS 501 is python and data science.<br />
<br />
'''Non-ISU Students: '''<br />
''Domestic students who are not quite ready to start the CS MS (or just aren't sure if they want to do a full MS) can [https://www.indstate.edu/cgps/graduate/apply/non-degree-application apply to ISU as a Guest/Unclassifed student]'' and take the course either face to face or online. To do this, click on the Apply button, click to create an account if this is your first time starting an application at ISU, choose Graduate when prompted between Graduate or Undergraduate, for the Field of Interest choose "Guest Admission / Unclassified", and for Program of Study choose "Guest Admission (One Semester Only)". Choose the term that you plan to take the course, and complete the remaining required fields. <br />
<br />
''International students outside of the US'' are not in general allowed to take courses online inside of the US without being enrolled in a degree program. International persons who are in the US on a visa of some type might be allowed to take the course (in particular, those on F2 or H4 likely would be allowed). Those who cannot take courses at ISU can check back here for course info (sample quizzes, reading assignments, programming assignments, tutorials, etc.) that will be posted publicly throughout the fall 2022 term. <br />
<br />
For those with no or little prior programming and CS experience, you are highly recommended to take this course to build your programming skills (and for those interested in a CS MS, to get you ready to apply to the CS MS program).<br />
<br />
=General Course Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_510<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TR 9am-noon, MWF 2-3pm<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' TR 12:30-1:45 over Zoom (in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Tuesday May 2, 1-2:50pm<br> <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. <br />
<br />
'''Prerequisites''' - none.<br />
<br />
'''CRN numbers''' - 13236<br />
<br />
'''Required text'''<br />
* We will use the following free online sources.<br />
* For python - '''[https://runestone.academy/ns/books/published/thinkcspy/index.html How to Think Like a Computer Scientist] (aka "Think CS")''', [https://docs.python.org/3/ Python Official Documentation], [https://pandas.pydata.org/docs/ Pandas Official Documentation]<br />
* For data structures and algorithms - '''[https://www.tutorialspoint.com/data_structures_algorithms/index.htm TutorialsPoint Data Structures and Algorithms]''', and we might supplement with the texts used in [[CS 500]].<br />
* 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<br />
* Additional sources - as needed.<br />
<br />
'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/Esopw95fVJZJlZ-cySXQWs4B3ZLC_Vwclet7bWeTaWgD9Q?e=7YDH4i CS 510 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.<br />
<br />
'''Code from lectures''' - Some code from lectures will be at https://cs.indstate.edu/~cs510/<br />
<br />
'''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 [https://teams.microsoft.com/l/team/19%3aPmUdc-sEsyjfX0aajYlut2aMxPant_3kuzqinCDfEIE1%40thread.tacv2/conversations?groupId=55159713-d7fe-4c81-91d5-3ea970cd1b8a&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 510 MS teams direct link]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
Note - each assignment has two listed "due dates" - the first is when I recommend you getting it done. The second is the "last chance" due date - I won't be grading things after that due date.<br />
<br />
For assignments where there is a wiki page link as the assignment, go to the section on the wiki page "Assignment" to see what you need to do. These are assignments that are used each semester.<br />
<br />
* '''h9_python''' - on the CS server. Due Feb 2/8.<br />
* '''h8_python''' - on the CS server. Due Jan 31/Feb 2.<br />
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231886 Python Operators and Expressions]''' - the link is to a practice quiz. Due by Feb 1.<br />
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231885 Python Keywords and Data Types]''' - the link is to a practice quiz. Due by Feb 1.<br />
* '''h7_python''' - on the CS server. Works similar to h5 and h6. Due Jan 26/31.<br />
* '''h6_python''' - on the CS server. Works similar to h5_linux. Due Jan 19/24.<br />
* '''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 17/19<br />
* '''h4 - [[Text Editors]] Terminal'''. Due Jan 12/17.<br />
* '''h3 - [[Hello Unix Lab]]'''. Due Jan 12/17.<br />
* '''h2 - [[CS Server - Terminal]]'''. Due Jan 12/17.<br />
* '''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 12/17.<br />
<br />
==Announcements==<br />
* Jan 31 - questions on h8, q1, q2? Loops, conditionals/selection. Classic example programs. Introducing h9.<br />
* Jan 26 - pdf's of practice quizzes. Quizzes will be Wednesday, 20 minutes each, in canvas.<br />
* Jan 26 - h7 - note the grading comments in the README. q1 and q2 dates? Introducing h8. Think CS exercises - look at their code. <br />
* Jan 24 - pick up where we left off on bit operations, so now you should be able to do both of the Python quizzes (not just copy/paste but be able to evaluate the expressions yourself as well).<br />
* Jan 24 - h6 - comments on your submissions (make your program so what it prints matches the sample transcript in the README). h7 sample transcripts.<br />
* Jan 19 - more python programs, let's try a few of the quiz questions.<br />
* Jan 19 - h6 - updated the README with additional instructions so the files are copied over properly when you hand them in.<br />
* Jan 17 - reading assignment - Think CS up through chapter 8<br />
* Jan 17 - examples of using all Python keywords and operators, big picture of the main parts of any programming language - basic data types, arrays or lists, loops, functions, selection, modules.<br />
* Jan 17 - note on reading Think CS - recommendation is to try all exercises and questions as you read. This is especially important for those who are not experienced programmers already. I may not test you on these, but you will only get the understanding you need by doing extra work like this.<br />
* Jan 17 - at some point we will have a quiz over using the Linux terminal. For now, you can use the Linux Terminal pages linked from [[Linux and CS Systems - Getting Started]] as a reference. <br />
* Jan 17 - note that we will be having quizzes over python basics probably next week. You can already try out the practice quizzes: [https://indstate.instructure.com/courses/12565/quizzes/231885 python keywords and data types], and [https://indstate.instructure.com/courses/12565/quizzes/231886 python operators and expressions].<br />
* Jan 12 - reading assignment - Think CS - chapter 1 (read through in one sitting), chapter 2 (get started). Note that there may be quizzes over the bold terms and concepts from Think CS (so pay attention to those, and take notes of things that are new to you).<br />
* Jan 12 - new hw assignment - h5, see today's lecture.<br />
* Jan 12 - reading assignment - [[Linux and CS Systems - Getting Started]] and the pages linked from there. We will have a quiz over the Linux commands next week.<br />
* Jan 10, 2023 - first day of class - how the class will work, class website, setting up your computer to get started.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
The catalog description for this course is: "A compressed introduction to programming in a specific language for the purpose of assisting student to become competent programmers in the language quickly." '''However''', the course is being changed so that it clearly is for an audience without much CS or programming background, and so that one of its outcomes is to help those interested in a CS MS to be able to pass the ISU CS MS admissions interview process.<br />
<br />
The following is the plan as we start the semester. As this is the first time for this course to be offered in this way, I will be updating this as we make our way through the term.<br />
<br />
'''Course Outline'''<br />
* Getting started - system setup, linux, math background, development on your personal computer.<br />
* Python programming basics - operators, reserved words, data types, base systems, overflow.<br />
* Python programming containers - strings, tuples, lists, dictionaries, sets.<br />
* Python programming object-oriented<br />
* Python programming style - good programming style for reliability, readability, extensibility, security.<br />
* Data structures - understanding/use of most important data structures - arrays, linked lists, binary search trees, hash tables, heaps. Implementation of some of these in Python.<br />
* Algorithms - understanding/use of some basic algorithms - sorting (various), binary/linear search (and uses) - including some algorithms that are each of - greedy, heuristic, randomized, brute force / backtracking.<br />
* Vocab - additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''Learning Outcomes'''<br />
* System setup - personal computer setup for both remote (connecting to CS server with terminal, sftp, X windows) and local development (editor, compiler/interpreter).<br />
* Linux - proficient using the Linux terminal for development.<br />
* Math background - proficient in math background needed for data structures and algorithms.<br />
* Personal computer - is setup for development so you can do coursework from your home computer as well.<br />
* Python programming - understanding of most language features, proficient in writing code using the most common, write code using good programming style.<br />
* Data structures - understanding of operations, efficiency, use cases, can use builtin python data structures and write python code for some data structures that are not included in python.<br />
* Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the algorithms to solve problems efficiently.<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''C - lowest passing grade in a grad course''' <br />
* Pass or higher achievement for ''all'' of the following<br />
* Terminal text editors - basic use<br />
* Linux terminal commands, files - basic use<br />
* Math for CS basics (base systems, rules of exponents, logs, logic)<br />
* Python - basic development in the terminal on the CS server<br />
* Python - basic development on your personal computer<br />
* Text editor - on your personal computer<br />
* File transfers - between personal computer and CS server<br />
* Python programming basics - knowledge of keywords, concepts, operators, evaluation of expressions<br />
* Python programming containers - knowledge of basic operations on tuples, lists, sets, dictionaries<br />
<br />
'''B - satisfactory'''<br />
* In addition to the above...<br />
* Object-oriented programming in python<br />
* Python programming style - good programming style for reliability, readability, extensibility, security.<br />
* Data structures - good understanding of how operations are implemented for - arrays, linked lists, binary search trees, hash tables, heaps. Able to properly "play computer" with these.<br />
* Algorithms - good understanding of several linear and binary search, several sorting algorithms (including one efficient one).<br />
* Vocab - some additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''A - good/excellent'''<br />
* In addition to the above...<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* Basic data structures from B level - can write python code to implement the data structures.<br />
* Algorithms - can write python code to implement linear and binary search, several sorting algorithms (including one efficient one).<br />
* Algorithms - good understanding of some algorithms for each of - greedy, heuristic, randomized, brute force / backtracking.<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.'''<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_510&diff=3747CS 5102023-02-02T13:50:28Z<p>Jkinne: /* Assignments */</p>
<hr />
<div>This page contains the syllabus for CS 510 and is used to keep track of assignments, etc. as well for the most recent offering (fall 2022).<br />
<br />
CS 510 is Fast Track Introduction to Programming. The course has no pre-reqs (can be taken by those with no prior CS or programming experience) and is meant to (a) get you programming (in python), and (b) get you ready to pass the admissions interview (python programming and basic algorithms / data structures). CS 510 counts as elective credit towards the MS degree. The course is meant for current ISU students in non-CS programs and for potential incoming CS MS students who need the course to get ready for the CS MS.<br />
<br />
For more information on applying to the CS MS program, see http://cs.indstate.edu/info/apply.html<br />
<br />
=Who Should Register=<br />
'''Current ISU Students: '''<br />
For ISU grad students who are in non-CS programs, if you do not have much programming experience, CS 510 is your best starting point in CS coursework. If you are already a competent programmer in some language, then you likely would want to start with either [[CS 500]] or [https://cs.indstate.edu/~lmay1/courses/#/courses/cs401/home CS 501]. CS 500 is C and data structures and algorithms, while CS 501 is python and data science.<br />
<br />
'''Non-ISU Students: '''<br />
''Domestic students who are not quite ready to start the CS MS (or just aren't sure if they want to do a full MS) can [https://www.indstate.edu/cgps/graduate/apply/non-degree-application apply to ISU as a Guest/Unclassifed student]'' and take the course either face to face or online. To do this, click on the Apply button, click to create an account if this is your first time starting an application at ISU, choose Graduate when prompted between Graduate or Undergraduate, for the Field of Interest choose "Guest Admission / Unclassified", and for Program of Study choose "Guest Admission (One Semester Only)". Choose the term that you plan to take the course, and complete the remaining required fields. <br />
<br />
''International students outside of the US'' are not in general allowed to take courses online inside of the US without being enrolled in a degree program. International persons who are in the US on a visa of some type might be allowed to take the course (in particular, those on F2 or H4 likely would be allowed). Those who cannot take courses at ISU can check back here for course info (sample quizzes, reading assignments, programming assignments, tutorials, etc.) that will be posted publicly throughout the fall 2022 term. <br />
<br />
For those with no or little prior programming and CS experience, you are highly recommended to take this course to build your programming skills (and for those interested in a CS MS, to get you ready to apply to the CS MS program).<br />
<br />
=General Course Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_510<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TR 9am-noon, MWF 2-3pm<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' TR 12:30-1:45 over Zoom (in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Tuesday May 2, 1-2:50pm<br> <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. <br />
<br />
'''Prerequisites''' - none.<br />
<br />
'''CRN numbers''' - 13236<br />
<br />
'''Required text'''<br />
* We will use the following free online sources.<br />
* For python - '''[https://runestone.academy/ns/books/published/thinkcspy/index.html How to Think Like a Computer Scientist] (aka "Think CS")''', [https://docs.python.org/3/ Python Official Documentation], [https://pandas.pydata.org/docs/ Pandas Official Documentation]<br />
* For data structures and algorithms - '''[https://www.tutorialspoint.com/data_structures_algorithms/index.htm TutorialsPoint Data Structures and Algorithms]''', and we might supplement with the texts used in [[CS 500]].<br />
* 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<br />
* Additional sources - as needed.<br />
<br />
'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/Esopw95fVJZJlZ-cySXQWs4B3ZLC_Vwclet7bWeTaWgD9Q?e=7YDH4i CS 510 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.<br />
<br />
'''Code from lectures''' - Some code from lectures will be at https://cs.indstate.edu/~cs510/<br />
<br />
'''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 [https://teams.microsoft.com/l/team/19%3aPmUdc-sEsyjfX0aajYlut2aMxPant_3kuzqinCDfEIE1%40thread.tacv2/conversations?groupId=55159713-d7fe-4c81-91d5-3ea970cd1b8a&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 510 MS teams direct link]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
Note - each assignment has two listed "due dates" - the first is when I recommend you getting it done. The second is the "last chance" due date - I won't be grading things after that due date.<br />
<br />
For assignments where there is a wiki page link as the assignment, go to the section on the wiki page "Assignment" to see what you need to do. These are assignments that are used each semester.<br />
<br />
* '''h9_python''' - on the CS server. Due Feb 2/8.<br />
* '''h8_python''' - on the CS server. Due Jan 31/Feb 2.<br />
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231886 Python Operators and Expressions]''' - the link is to a practice quiz. <br />
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231885 Python Keywords and Data Types]''' - the link is to a practice quiz. <br />
* '''h7_python''' - on the CS server. Works similar to h5 and h6. Due Jan 26/31.<br />
* '''h6_python''' - on the CS server. Works similar to h5_linux. Due Jan 19/24.<br />
* '''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 17/19<br />
* '''h4 - [[Text Editors]] Terminal'''. Due Jan 12/17.<br />
* '''h3 - [[Hello Unix Lab]]'''. Due Jan 12/17.<br />
* '''h2 - [[CS Server - Terminal]]'''. Due Jan 12/17.<br />
* '''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 12/17.<br />
<br />
==Announcements==<br />
* Jan 31 - questions on h8, q1, q2? Loops, conditionals/selection. Classic example programs. Introducing h9.<br />
* Jan 26 - pdf's of practice quizzes. Quizzes will be Wednesday, 20 minutes each, in canvas.<br />
* Jan 26 - h7 - note the grading comments in the README. q1 and q2 dates? Introducing h8. Think CS exercises - look at their code. <br />
* Jan 24 - pick up where we left off on bit operations, so now you should be able to do both of the Python quizzes (not just copy/paste but be able to evaluate the expressions yourself as well).<br />
* Jan 24 - h6 - comments on your submissions (make your program so what it prints matches the sample transcript in the README). h7 sample transcripts.<br />
* Jan 19 - more python programs, let's try a few of the quiz questions.<br />
* Jan 19 - h6 - updated the README with additional instructions so the files are copied over properly when you hand them in.<br />
* Jan 17 - reading assignment - Think CS up through chapter 8<br />
* Jan 17 - examples of using all Python keywords and operators, big picture of the main parts of any programming language - basic data types, arrays or lists, loops, functions, selection, modules.<br />
* Jan 17 - note on reading Think CS - recommendation is to try all exercises and questions as you read. This is especially important for those who are not experienced programmers already. I may not test you on these, but you will only get the understanding you need by doing extra work like this.<br />
* Jan 17 - at some point we will have a quiz over using the Linux terminal. For now, you can use the Linux Terminal pages linked from [[Linux and CS Systems - Getting Started]] as a reference. <br />
* Jan 17 - note that we will be having quizzes over python basics probably next week. You can already try out the practice quizzes: [https://indstate.instructure.com/courses/12565/quizzes/231885 python keywords and data types], and [https://indstate.instructure.com/courses/12565/quizzes/231886 python operators and expressions].<br />
* Jan 12 - reading assignment - Think CS - chapter 1 (read through in one sitting), chapter 2 (get started). Note that there may be quizzes over the bold terms and concepts from Think CS (so pay attention to those, and take notes of things that are new to you).<br />
* Jan 12 - new hw assignment - h5, see today's lecture.<br />
* Jan 12 - reading assignment - [[Linux and CS Systems - Getting Started]] and the pages linked from there. We will have a quiz over the Linux commands next week.<br />
* Jan 10, 2023 - first day of class - how the class will work, class website, setting up your computer to get started.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
The catalog description for this course is: "A compressed introduction to programming in a specific language for the purpose of assisting student to become competent programmers in the language quickly." '''However''', the course is being changed so that it clearly is for an audience without much CS or programming background, and so that one of its outcomes is to help those interested in a CS MS to be able to pass the ISU CS MS admissions interview process.<br />
<br />
The following is the plan as we start the semester. As this is the first time for this course to be offered in this way, I will be updating this as we make our way through the term.<br />
<br />
'''Course Outline'''<br />
* Getting started - system setup, linux, math background, development on your personal computer.<br />
* Python programming basics - operators, reserved words, data types, base systems, overflow.<br />
* Python programming containers - strings, tuples, lists, dictionaries, sets.<br />
* Python programming object-oriented<br />
* Python programming style - good programming style for reliability, readability, extensibility, security.<br />
* Data structures - understanding/use of most important data structures - arrays, linked lists, binary search trees, hash tables, heaps. Implementation of some of these in Python.<br />
* Algorithms - understanding/use of some basic algorithms - sorting (various), binary/linear search (and uses) - including some algorithms that are each of - greedy, heuristic, randomized, brute force / backtracking.<br />
* Vocab - additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''Learning Outcomes'''<br />
* System setup - personal computer setup for both remote (connecting to CS server with terminal, sftp, X windows) and local development (editor, compiler/interpreter).<br />
* Linux - proficient using the Linux terminal for development.<br />
* Math background - proficient in math background needed for data structures and algorithms.<br />
* Personal computer - is setup for development so you can do coursework from your home computer as well.<br />
* Python programming - understanding of most language features, proficient in writing code using the most common, write code using good programming style.<br />
* Data structures - understanding of operations, efficiency, use cases, can use builtin python data structures and write python code for some data structures that are not included in python.<br />
* Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the algorithms to solve problems efficiently.<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''C - lowest passing grade in a grad course''' <br />
* Pass or higher achievement for ''all'' of the following<br />
* Terminal text editors - basic use<br />
* Linux terminal commands, files - basic use<br />
* Math for CS basics (base systems, rules of exponents, logs, logic)<br />
* Python - basic development in the terminal on the CS server<br />
* Python - basic development on your personal computer<br />
* Text editor - on your personal computer<br />
* File transfers - between personal computer and CS server<br />
* Python programming basics - knowledge of keywords, concepts, operators, evaluation of expressions<br />
* Python programming containers - knowledge of basic operations on tuples, lists, sets, dictionaries<br />
<br />
'''B - satisfactory'''<br />
* In addition to the above...<br />
* Object-oriented programming in python<br />
* Python programming style - good programming style for reliability, readability, extensibility, security.<br />
* Data structures - good understanding of how operations are implemented for - arrays, linked lists, binary search trees, hash tables, heaps. Able to properly "play computer" with these.<br />
* Algorithms - good understanding of several linear and binary search, several sorting algorithms (including one efficient one).<br />
* Vocab - some additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''A - good/excellent'''<br />
* In addition to the above...<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* Basic data structures from B level - can write python code to implement the data structures.<br />
* Algorithms - can write python code to implement linear and binary search, several sorting algorithms (including one efficient one).<br />
* Algorithms - good understanding of some algorithms for each of - greedy, heuristic, randomized, brute force / backtracking.<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.'''<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_500&diff=3746CS 5002023-02-01T22:27:24Z<p>Jkinne: /* Announcements */</p>
<hr />
<div>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. <br />
<br />
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.<br />
<br />
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).<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_500<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TR 9am-noon, MWF 2-3pm<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' MWF 11-11:50am in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Friday, May 5 10-11:50am <br> <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. <br />
<br />
'''Prerequisites''' - admission to the CS MS program or approval of instructor, should be a competent programmer in some programming language.<br />
<br />
'''CRN numbers''' - 11401 for the 001 face to face section, 12108 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use the following free online sources.<br />
* 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<br />
* 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<br />
* 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<br />
* Additional sources - as needed.<br />
<br />
'''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>.<br />
<br />
'''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<br />
[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]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
<br />
* '''q4''' - will be over Linux terminal commands and using the terminal.<br />
* '''h8_C''' - will be either chess game started in class, or another bunch of small C programs.<br />
* '''h7_C''' - will be either chess game started in class, or another bunch of small C programs.<br />
* '''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.<br />
* '''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.<br />
* '''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.<br />
* '''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.<br />
* '''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<br />
* '''h4 - [[Text Editors]] Terminal'''. Due Jan 13/18.<br />
* '''h3 - [[Hello Unix Lab]]'''. Due Jan 13/18.<br />
* '''h2 - [[CS Server - Terminal]]'''. Due Jan 13/18.<br />
* '''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.<br />
<br />
==Announcements==<br />
* Feb 3 - continuing with chess, next hw. Note the quiz score stats above.<br />
* Feb 1 - retakes on q1, q2, q3. If you have any questions about the hw.<br />
* 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.<br />
* Jan 30 - questions on h6. introducing - chess game (will be a hw assignment).<br />
* Jan 27 - Finish loop_stdin.c, and continue on. Introducing assignment h6_C.<br />
* Jan 23 - quizzes q1, q2, q3.<br />
* Jan 20 - see the terminal stuff linked from [[Linux and CS Systems - Getting Started]]<br />
* Jan 20 - continuing with C examples, note that the quizzes q1-q3 will be Monday.<br />
* 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, ...).<br />
* Jan 13 - Introducing h5. Quizzes q1, q2, q3 in one week. Reading assignment - Essential C (all of it). See also - [[C Basics]]<br />
* 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.<br />
* Jan 11 - first day of class, syllabus, etc.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
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.<br />
<br />
'''Course Outline'''<br />
* Getting started - system setup, git, linux, bash, make, apache, math background, development on your personal computer.<br />
* C programming basics - operators, reserved words, data types, base systems, overflow.<br />
* C programming strings - manipulation of C strings.<br />
* C programming memory management - different types of memory in C, how to use them, pros and cons.<br />
* C programming style - good programming style for reliability, readability, extensibility, security.<br />
* 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.<br />
* 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.<br />
* Vocab - additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''Learning Outcomes'''<br />
* System setup - personal computer setup for both remote (connecting to CS server with terminal, sftp, X windows) and local development (editor, compiler).<br />
* Git - basic use of git for source code management.<br />
* Linux - proficient using the Linux terminal for development.<br />
* Bash - basic use of bash scripts for testing code.<br />
* Make - basic use of GNU make for compiling code.<br />
* Apache - able to post content to your CS accounts to be viewable over the web.<br />
* Math background - proficient in math background needed for data structures and algorithms.<br />
* Personal computer - is setup for development so you can do coursework from your home computer as well.<br />
* C programming - understanding of all language features, proficient in writing code using the most common, write code using good programming style.<br />
* Data structures - understanding of operations, efficiency, use cases, can write code in C for data structure operations.<br />
* Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the right algorithms to solve problems efficiently.<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''C - lowest passing grade in a grad course''' <br />
* Pass or higher achievement for ''all'' of the following<br />
* System setup, git, linux, bash, make, apache, math background, personal computer<br />
* C programming basics<br />
* Data structures basic understanding - arrays (stack and queue), linked lists (stack and queue), binary search trees, hash tables<br />
* Data structures programming - can write the code for methods for ''some'' of the above<br />
* Data structures programming - can use ''some'' of the above data structures to solve problems<br />
* Sorting algorithms - basic understanding of at least one slow and at least one efficient sorting algorithm<br />
* Sorting algorithms - can write the code for at least one sorting algorithm<br />
* Algorithm techniques - basic understanding of ''at least one'' greedy, divide and conquer, brute force, and dynamic programming algorithm.<br />
* Asymptotic resource usage - basic understanding, can use Jeff's rules of thumb in simplifying expressions<br />
<br />
'''B - satisfactory'''<br />
* In addition to the above...<br />
* Data structures programming - can write the code for methods for ''most'' of the "C grade" basic data structures<br />
* Data structures programming - can use ''most'' of the "C grade" basic data structures to solve problems<br />
* Data structures basic understanding - skip list, red black trees, heap, B tree<br />
* Sorting algorithms - can write the code for at least one slow and at least one efficient sorting algorithm<br />
* Sorting algorithms - basic understanding of multiple slow and multiple efficient sorting algorithms<br />
* Graph algorithms - basic understanding of the adjacency lists, adjacency matrices, graph algorithms DFS and BFS<br />
* 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<br />
<br />
'''A - good/excellent'''<br />
* In addition to the above...<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* Graph algorithms - can write the code for some of the "B level" graph algorithms<br />
* Graph algorithms - basic understanding of an MST algorithm and shortest path algorithm<br />
* Asymptotic resource usage - can apply the master theorem ''and'' recursion tree methods to recursive resource formulae<br />
* Integer algorithms - basic understanding of faster-than-obvious multiplication and exponentiation algorithms<br />
* Algorithm techniques - can write code for at least one algorithm for each of the "C level" algorithm techniques<br />
* Algorithm techniques - basic understanding of ''multiple'' algorithms for each of the "C level" algorithm techniques<br />
* Complexity theory - basic understanding of the definitions of L, P, NP, PSPACE, EXP and a few canonical problems in each<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.'''<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_500&diff=3745CS 5002023-02-01T22:26:16Z<p>Jkinne: /* Assignments */</p>
<hr />
<div>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. <br />
<br />
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.<br />
<br />
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).<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_500<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TR 9am-noon, MWF 2-3pm<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' MWF 11-11:50am in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Friday, May 5 10-11:50am <br> <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. <br />
<br />
'''Prerequisites''' - admission to the CS MS program or approval of instructor, should be a competent programmer in some programming language.<br />
<br />
'''CRN numbers''' - 11401 for the 001 face to face section, 12108 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use the following free online sources.<br />
* 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<br />
* 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<br />
* 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<br />
* Additional sources - as needed.<br />
<br />
'''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>.<br />
<br />
'''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<br />
[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]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
<br />
* '''q4''' - will be over Linux terminal commands and using the terminal.<br />
* '''h8_C''' - will be either chess game started in class, or another bunch of small C programs.<br />
* '''h7_C''' - will be either chess game started in class, or another bunch of small C programs.<br />
* '''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.<br />
* '''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.<br />
* '''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.<br />
* '''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.<br />
* '''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<br />
* '''h4 - [[Text Editors]] Terminal'''. Due Jan 13/18.<br />
* '''h3 - [[Hello Unix Lab]]'''. Due Jan 13/18.<br />
* '''h2 - [[CS Server - Terminal]]'''. Due Jan 13/18.<br />
* '''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.<br />
<br />
==Announcements==<br />
* Feb 3 - continuing with chess, next hw.<br />
* Feb 1 - retakes on q1, q2, q3. If you have any questions about the hw.<br />
* 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.<br />
* Jan 30 - questions on h6. introducing - chess game (will be a hw assignment).<br />
* Jan 27 - Finish loop_stdin.c, and continue on. Introducing assignment h6_C.<br />
* Jan 23 - quizzes q1, q2, q3.<br />
* Jan 20 - see the terminal stuff linked from [[Linux and CS Systems - Getting Started]]<br />
* Jan 20 - continuing with C examples, note that the quizzes q1-q3 will be Monday.<br />
* 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, ...).<br />
* Jan 13 - Introducing h5. Quizzes q1, q2, q3 in one week. Reading assignment - Essential C (all of it). See also - [[C Basics]]<br />
* 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.<br />
* Jan 11 - first day of class, syllabus, etc.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
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.<br />
<br />
'''Course Outline'''<br />
* Getting started - system setup, git, linux, bash, make, apache, math background, development on your personal computer.<br />
* C programming basics - operators, reserved words, data types, base systems, overflow.<br />
* C programming strings - manipulation of C strings.<br />
* C programming memory management - different types of memory in C, how to use them, pros and cons.<br />
* C programming style - good programming style for reliability, readability, extensibility, security.<br />
* 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.<br />
* 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.<br />
* Vocab - additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''Learning Outcomes'''<br />
* System setup - personal computer setup for both remote (connecting to CS server with terminal, sftp, X windows) and local development (editor, compiler).<br />
* Git - basic use of git for source code management.<br />
* Linux - proficient using the Linux terminal for development.<br />
* Bash - basic use of bash scripts for testing code.<br />
* Make - basic use of GNU make for compiling code.<br />
* Apache - able to post content to your CS accounts to be viewable over the web.<br />
* Math background - proficient in math background needed for data structures and algorithms.<br />
* Personal computer - is setup for development so you can do coursework from your home computer as well.<br />
* C programming - understanding of all language features, proficient in writing code using the most common, write code using good programming style.<br />
* Data structures - understanding of operations, efficiency, use cases, can write code in C for data structure operations.<br />
* Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the right algorithms to solve problems efficiently.<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''C - lowest passing grade in a grad course''' <br />
* Pass or higher achievement for ''all'' of the following<br />
* System setup, git, linux, bash, make, apache, math background, personal computer<br />
* C programming basics<br />
* Data structures basic understanding - arrays (stack and queue), linked lists (stack and queue), binary search trees, hash tables<br />
* Data structures programming - can write the code for methods for ''some'' of the above<br />
* Data structures programming - can use ''some'' of the above data structures to solve problems<br />
* Sorting algorithms - basic understanding of at least one slow and at least one efficient sorting algorithm<br />
* Sorting algorithms - can write the code for at least one sorting algorithm<br />
* Algorithm techniques - basic understanding of ''at least one'' greedy, divide and conquer, brute force, and dynamic programming algorithm.<br />
* Asymptotic resource usage - basic understanding, can use Jeff's rules of thumb in simplifying expressions<br />
<br />
'''B - satisfactory'''<br />
* In addition to the above...<br />
* Data structures programming - can write the code for methods for ''most'' of the "C grade" basic data structures<br />
* Data structures programming - can use ''most'' of the "C grade" basic data structures to solve problems<br />
* Data structures basic understanding - skip list, red black trees, heap, B tree<br />
* Sorting algorithms - can write the code for at least one slow and at least one efficient sorting algorithm<br />
* Sorting algorithms - basic understanding of multiple slow and multiple efficient sorting algorithms<br />
* Graph algorithms - basic understanding of the adjacency lists, adjacency matrices, graph algorithms DFS and BFS<br />
* 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<br />
<br />
'''A - good/excellent'''<br />
* In addition to the above...<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* Graph algorithms - can write the code for some of the "B level" graph algorithms<br />
* Graph algorithms - basic understanding of an MST algorithm and shortest path algorithm<br />
* Asymptotic resource usage - can apply the master theorem ''and'' recursion tree methods to recursive resource formulae<br />
* Integer algorithms - basic understanding of faster-than-obvious multiplication and exponentiation algorithms<br />
* Algorithm techniques - can write code for at least one algorithm for each of the "C level" algorithm techniques<br />
* Algorithm techniques - basic understanding of ''multiple'' algorithms for each of the "C level" algorithm techniques<br />
* Complexity theory - basic understanding of the definitions of L, P, NP, PSPACE, EXP and a few canonical problems in each<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.'''<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_500&diff=3744CS 5002023-02-01T15:59:10Z<p>Jkinne: /* Announcements */</p>
<hr />
<div>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. <br />
<br />
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.<br />
<br />
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).<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_500<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TR 9am-noon, MWF 2-3pm<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' MWF 11-11:50am in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Friday, May 5 10-11:50am <br> <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. <br />
<br />
'''Prerequisites''' - admission to the CS MS program or approval of instructor, should be a competent programmer in some programming language.<br />
<br />
'''CRN numbers''' - 11401 for the 001 face to face section, 12108 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use the following free online sources.<br />
* 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<br />
* 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<br />
* 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<br />
* Additional sources - as needed.<br />
<br />
'''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>.<br />
<br />
'''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<br />
[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]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
<br />
* '''q4''' - will be over Linux terminal commands and using the terminal.<br />
* '''h8_C''' - will be either chess game started in class, or another bunch of small C programs.<br />
* '''h7_C''' - will be either chess game started in class, or another bunch of small C programs.<br />
* '''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.<br />
* '''q3 - [https://indstate.instructure.com/courses/12565/quizzes/231870 C Errors]''' - that is a link to a practice quiz. In class on Jan 23.<br />
* '''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.<br />
* '''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.<br />
* '''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<br />
* '''h4 - [[Text Editors]] Terminal'''. Due Jan 13/18.<br />
* '''h3 - [[Hello Unix Lab]]'''. Due Jan 13/18.<br />
* '''h2 - [[CS Server - Terminal]]'''. Due Jan 13/18.<br />
* '''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.<br />
<br />
==Announcements==<br />
* Feb 3 - continuing with chess, next hw.<br />
* Feb 1 - retakes on q1, q2, q3. If you have any questions about the hw.<br />
* 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.<br />
* Jan 30 - questions on h6. introducing - chess game (will be a hw assignment).<br />
* Jan 27 - Finish loop_stdin.c, and continue on. Introducing assignment h6_C.<br />
* Jan 23 - quizzes q1, q2, q3.<br />
* Jan 20 - see the terminal stuff linked from [[Linux and CS Systems - Getting Started]]<br />
* Jan 20 - continuing with C examples, note that the quizzes q1-q3 will be Monday.<br />
* 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, ...).<br />
* Jan 13 - Introducing h5. Quizzes q1, q2, q3 in one week. Reading assignment - Essential C (all of it). See also - [[C Basics]]<br />
* 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.<br />
* Jan 11 - first day of class, syllabus, etc.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
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.<br />
<br />
'''Course Outline'''<br />
* Getting started - system setup, git, linux, bash, make, apache, math background, development on your personal computer.<br />
* C programming basics - operators, reserved words, data types, base systems, overflow.<br />
* C programming strings - manipulation of C strings.<br />
* C programming memory management - different types of memory in C, how to use them, pros and cons.<br />
* C programming style - good programming style for reliability, readability, extensibility, security.<br />
* 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.<br />
* 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.<br />
* Vocab - additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''Learning Outcomes'''<br />
* System setup - personal computer setup for both remote (connecting to CS server with terminal, sftp, X windows) and local development (editor, compiler).<br />
* Git - basic use of git for source code management.<br />
* Linux - proficient using the Linux terminal for development.<br />
* Bash - basic use of bash scripts for testing code.<br />
* Make - basic use of GNU make for compiling code.<br />
* Apache - able to post content to your CS accounts to be viewable over the web.<br />
* Math background - proficient in math background needed for data structures and algorithms.<br />
* Personal computer - is setup for development so you can do coursework from your home computer as well.<br />
* C programming - understanding of all language features, proficient in writing code using the most common, write code using good programming style.<br />
* Data structures - understanding of operations, efficiency, use cases, can write code in C for data structure operations.<br />
* Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the right algorithms to solve problems efficiently.<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''C - lowest passing grade in a grad course''' <br />
* Pass or higher achievement for ''all'' of the following<br />
* System setup, git, linux, bash, make, apache, math background, personal computer<br />
* C programming basics<br />
* Data structures basic understanding - arrays (stack and queue), linked lists (stack and queue), binary search trees, hash tables<br />
* Data structures programming - can write the code for methods for ''some'' of the above<br />
* Data structures programming - can use ''some'' of the above data structures to solve problems<br />
* Sorting algorithms - basic understanding of at least one slow and at least one efficient sorting algorithm<br />
* Sorting algorithms - can write the code for at least one sorting algorithm<br />
* Algorithm techniques - basic understanding of ''at least one'' greedy, divide and conquer, brute force, and dynamic programming algorithm.<br />
* Asymptotic resource usage - basic understanding, can use Jeff's rules of thumb in simplifying expressions<br />
<br />
'''B - satisfactory'''<br />
* In addition to the above...<br />
* Data structures programming - can write the code for methods for ''most'' of the "C grade" basic data structures<br />
* Data structures programming - can use ''most'' of the "C grade" basic data structures to solve problems<br />
* Data structures basic understanding - skip list, red black trees, heap, B tree<br />
* Sorting algorithms - can write the code for at least one slow and at least one efficient sorting algorithm<br />
* Sorting algorithms - basic understanding of multiple slow and multiple efficient sorting algorithms<br />
* Graph algorithms - basic understanding of the adjacency lists, adjacency matrices, graph algorithms DFS and BFS<br />
* 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<br />
<br />
'''A - good/excellent'''<br />
* In addition to the above...<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* Graph algorithms - can write the code for some of the "B level" graph algorithms<br />
* Graph algorithms - basic understanding of an MST algorithm and shortest path algorithm<br />
* Asymptotic resource usage - can apply the master theorem ''and'' recursion tree methods to recursive resource formulae<br />
* Integer algorithms - basic understanding of faster-than-obvious multiplication and exponentiation algorithms<br />
* Algorithm techniques - can write code for at least one algorithm for each of the "C level" algorithm techniques<br />
* Algorithm techniques - basic understanding of ''multiple'' algorithms for each of the "C level" algorithm techniques<br />
* Complexity theory - basic understanding of the definitions of L, P, NP, PSPACE, EXP and a few canonical problems in each<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.'''<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_303&diff=3743CS 3032023-02-01T14:57:46Z<p>Jkinne: /* Announcements */</p>
<hr />
<div>CS 303 Discrete Structures and Computing Theory is taken by CS majors after CS 151. <br />
<br />
This page contains the syllabus for CS 303 and is used to keep track of assignments, etc. as well for the most recent offering (spring 2023). For announcements, click the link in the table of contents.<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_303<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TBD<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' WF 10-10:50am, 1-1:50pm in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Monday, May 1, 10-11:50am and/or Wednesday, May 3 1-2:50pm <br> <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. <br />
<br />
'''Prerequisites''' - C or higher in CS 151.<br />
<br />
'''CRN numbers''' - 11380 for the 001 face to face section, 12450 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use selections from the following free online sources.<br />
* '''Primary text for the beginning of the course''' - '''[https://mfleck.cs.illinois.edu/building-blocks/index-sp2020.html Building Blocks for Theoretical Computer Science]''' by Margaret M. Fleck<br />
* [https://courses.csail.mit.edu/6.042/spring18/mcs.pdf Mathematics for Computer Science] by Eric Lehman, F Thomson Leighton, and Albert R Meyer<br />
* [https://cglab.ca/~michiel/TheoryOfComputation/TheoryOfComputation.pdf Introduction to Theory of Computation] by Anil Maheshwari and Michiel Smid<br />
* Additional sources - as needed<br />
** [https://en.wikipedia.org/wiki/Boolean_satisfiability_problem#3-satisfiability 3SAT NP-complete problem], [https://www.geeksforgeeks.org/proof-that-clique-decision-problem-is-np-complete/ Clique NP-complete problem], [https://cgi.csc.liv.ac.uk/~igor/COMP309/3CP.pdf 3 Coloring NP-complete problem]<br />
<br />
'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/Ei0RjIshxhlLmcwB-qhatPUBGDXtwXxc4O_-nVKPHoKrOw?e=yQKG51 CS 303 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.<br />
<br />
'''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 [https://teams.microsoft.com/l/team/19%3aFIaIH4p7m6BB3-VsZg5fx7SylggKoMt0rO7WHWqJbFk1%40thread.tacv2/conversations?groupId=6de93cd8-5594-4520-b014-7db43a7e9b4d&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 303 MS teams direct link]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
* '''q5 - [https://indstate.instructure.com/courses/12565/quizzes/231883 Number Theory]''' - that is the practice quiz. Feb 3, 1:25pm.<br />
* '''h1 - [[Truth table proofs]]''' - both assignments 1 and 2 listed there. For which logical identity and which logical fallacy you need to do, see the lecture from Jan 27 when this was shared on screen. Due Feb 3.<br />
* '''q4 - [https://indstate.instructure.com/courses/12565/quizzes/231878 Logic]''' - that is the practice quiz. Jan 27, 1:25pm. Score stats: max, median, min, average = 100, 75, 25, 69.79166667. Time to take the quiz stats: max, median, min, average = 30, 23, 5, 22.04166667.<br />
* '''q3 - [https://indstate.instructure.com/courses/12565/quizzes/231882 Miscellaneous Math]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 25.94444444, 92.50529101. Time to take the quiz stats: max, median, min, average = 13, 5, 2, 6.142857143.<br />
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231879 Math and Bases]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 66.66666667, 97.10144928. Time to take the quiz stats: max, median, min, average = 13, 5, 3, 6.173913043.<br />
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231880/take Math Notation]''' - that link is a practice quiz, the real one will be in our course in Canvas. See also [[Math for CS Review]] for a study guide of sorts. Open book, open internet, not "open other person". Jan 13 around 1:25pm (quiz will be 1:25-1:50pm). Score stats: max, median, min, average = 100, 100, 87.75510204, 98.4028394. Time to take the quiz stats: max, median, min, average = 22, 7, 5, 9.52173913.<br />
<br />
==Announcements==<br />
* Feb 1 - this week's quiz - number theory, see link above. Faculty candidate teaching demo. Continuing with number theory.<br />
* Jan 27 - Continuing with proofs in OneNote and BB. Introducing assignment h1. Taking the q4 logic quiz in the afternoon. Starting number theory (BB chapter 4).<br />
* Jan 20 - request to move the standard quiz day to be Wednesday. Nope, stick with Fridays.<br />
* Jan 20 - guest speaker for today, faculty candidate visiting today.<br />
* Jan 18 - reading assignment - Building Blocks chapters 3, 4.<br />
* Jan 18 - today's topic - Logic. See practice quiz above.<br />
* Jan 13 - q1 set so you can see your answers and the correct answers, and stats on the scores and total time taken are above. <br />
* Jan 13 - reading assignment - Building Blocks chapter 2.<br />
* Jan 13 - math notation, the graph questions. q1 math notation quiz. Continuing through math background, including material for q2 and q3 - see links above.<br />
* Jan 11 - note that q1 will be Friday, see above. In general for quizzes, no makeups, but you'll have a chance on the midterm to take it again.<br />
* Jan 11 - reading assignment - Building Blocks chapter 1. First quizzes - Friday 1-2pm.<br />
* Jan 11 - first day of class, syllabus and such. It is good for you to take notes.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
The catalog description for this course is: "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." The two main goals are (a) being able to reason about computation (mathematical objects and algorithms), (b) familiarity with the topics listed in the description which are important in later courses.<br />
<br />
'''Course Outline'''<br />
* We will start the course by following along in the order of ''Building Blocks for Theoretical Computer Science'', see link above.<br />
<br />
'''Learning Outcomes'''<br />
* Basic math - ability to use basic algebra, properties of numbers, rules of exponents and logarithms<br />
* Proofs - understanding of what a proof is, ability to use the following methods of proof as needed - direct proof / by construction, by contradiction, by induction, by decomposition<br />
* Logic - ability to use the rules of logic (truth tables, DeMorgan's laws, etc.) in arguments<br />
* Integers - can use the properties of the integers to write algorithms and reason about their correctness<br />
* Sets, relations, functions - can apply the definitions of these concepts in proofs<br />
* Graphs, trees - understanding of standard definitions related to graphs and trees, able to argue basic properties<br />
* Asymptotic resource analysis (big-O) - can apply the definitions of big-O notation to compare different running time formulae, to simplify expressions, and to determine the big-O running time of algorithms<br />
* Complexity theory - understanding of definitions of basic complexity classes (L, P, NP, PSPACE, EXP), understanding of canonical problems in each class, can reason about these complexity classes<br />
* Notions of infinity - understanding of difference between countably and uncountably infinite, can use these in proofs<br />
* Probability - knowledge of basic definitions and properties of discrete probability, can apply to the analysis of randomized algorithms and processes<br />
* Regular languages - understanding of DFAs, NFAs, regular expressions and ability to produce models for commonly encountered languages<br />
* General models of computation - understanding of Turing-complete models of computation (Turing machine, circuits, programming languages) and implications<br />
* Computability - can give arguments whether a given problem is computable or not (e.g., the halting problem)<br />
* Notation - proper use of math notation (sets, logic, functions, summations, proofs, etc.)<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''D'''<br />
* Pass- or higher achievement for ''all'' of the following<br />
* Hello unix lab (at least 2/2)<br />
* Math notation (at least 80%)<br />
* Math bases (at least 80%)<br />
* Truth table proof (at least 1.5/2)<br />
* Proof that a number is irrational (at least 1.5/2)<br />
* Euclidean algorithm - demo of running the algorithm (at least 1.5/2)<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''C''' <br />
* Pass or higher achievement for ''all'' of the above (at least 90% on quizzes, at least 2/2 on assignment problems)<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''B'''<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''A'''<br />
* In addition to the above...<br />
* At least 1 puzzle/challenge problem solved correctly (pass rating)<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_303&diff=3742CS 3032023-02-01T13:09:52Z<p>Jkinne: /* Assignments */</p>
<hr />
<div>CS 303 Discrete Structures and Computing Theory is taken by CS majors after CS 151. <br />
<br />
This page contains the syllabus for CS 303 and is used to keep track of assignments, etc. as well for the most recent offering (spring 2023). For announcements, click the link in the table of contents.<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_303<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TBD<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' WF 10-10:50am, 1-1:50pm in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Monday, May 1, 10-11:50am and/or Wednesday, May 3 1-2:50pm <br> <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. <br />
<br />
'''Prerequisites''' - C or higher in CS 151.<br />
<br />
'''CRN numbers''' - 11380 for the 001 face to face section, 12450 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use selections from the following free online sources.<br />
* '''Primary text for the beginning of the course''' - '''[https://mfleck.cs.illinois.edu/building-blocks/index-sp2020.html Building Blocks for Theoretical Computer Science]''' by Margaret M. Fleck<br />
* [https://courses.csail.mit.edu/6.042/spring18/mcs.pdf Mathematics for Computer Science] by Eric Lehman, F Thomson Leighton, and Albert R Meyer<br />
* [https://cglab.ca/~michiel/TheoryOfComputation/TheoryOfComputation.pdf Introduction to Theory of Computation] by Anil Maheshwari and Michiel Smid<br />
* Additional sources - as needed<br />
** [https://en.wikipedia.org/wiki/Boolean_satisfiability_problem#3-satisfiability 3SAT NP-complete problem], [https://www.geeksforgeeks.org/proof-that-clique-decision-problem-is-np-complete/ Clique NP-complete problem], [https://cgi.csc.liv.ac.uk/~igor/COMP309/3CP.pdf 3 Coloring NP-complete problem]<br />
<br />
'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/Ei0RjIshxhlLmcwB-qhatPUBGDXtwXxc4O_-nVKPHoKrOw?e=yQKG51 CS 303 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.<br />
<br />
'''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 [https://teams.microsoft.com/l/team/19%3aFIaIH4p7m6BB3-VsZg5fx7SylggKoMt0rO7WHWqJbFk1%40thread.tacv2/conversations?groupId=6de93cd8-5594-4520-b014-7db43a7e9b4d&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 303 MS teams direct link]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
* '''q5 - [https://indstate.instructure.com/courses/12565/quizzes/231883 Number Theory]''' - that is the practice quiz. Feb 3, 1:25pm.<br />
* '''h1 - [[Truth table proofs]]''' - both assignments 1 and 2 listed there. For which logical identity and which logical fallacy you need to do, see the lecture from Jan 27 when this was shared on screen. Due Feb 3.<br />
* '''q4 - [https://indstate.instructure.com/courses/12565/quizzes/231878 Logic]''' - that is the practice quiz. Jan 27, 1:25pm. Score stats: max, median, min, average = 100, 75, 25, 69.79166667. Time to take the quiz stats: max, median, min, average = 30, 23, 5, 22.04166667.<br />
* '''q3 - [https://indstate.instructure.com/courses/12565/quizzes/231882 Miscellaneous Math]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 25.94444444, 92.50529101. Time to take the quiz stats: max, median, min, average = 13, 5, 2, 6.142857143.<br />
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231879 Math and Bases]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 66.66666667, 97.10144928. Time to take the quiz stats: max, median, min, average = 13, 5, 3, 6.173913043.<br />
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231880/take Math Notation]''' - that link is a practice quiz, the real one will be in our course in Canvas. See also [[Math for CS Review]] for a study guide of sorts. Open book, open internet, not "open other person". Jan 13 around 1:25pm (quiz will be 1:25-1:50pm). Score stats: max, median, min, average = 100, 100, 87.75510204, 98.4028394. Time to take the quiz stats: max, median, min, average = 22, 7, 5, 9.52173913.<br />
<br />
==Announcements==<br />
* Jan 27 - Continuing with proofs in OneNote and BB. Introducing assignment h1. Taking the q4 logic quiz in the afternoon. Starting number theory (BB chapter 4).<br />
* Jan 20 - request to move the standard quiz day to be Wednesday. Nope, stick with Fridays.<br />
* Jan 20 - guest speaker for today, faculty candidate visiting today.<br />
* Jan 18 - reading assignment - Building Blocks chapters 3, 4.<br />
* Jan 18 - today's topic - Logic. See practice quiz above.<br />
* Jan 13 - q1 set so you can see your answers and the correct answers, and stats on the scores and total time taken are above. <br />
* Jan 13 - reading assignment - Building Blocks chapter 2.<br />
* Jan 13 - math notation, the graph questions. q1 math notation quiz. Continuing through math background, including material for q2 and q3 - see links above.<br />
* Jan 11 - note that q1 will be Friday, see above. In general for quizzes, no makeups, but you'll have a chance on the midterm to take it again.<br />
* Jan 11 - reading assignment - Building Blocks chapter 1. First quizzes - Friday 1-2pm.<br />
* Jan 11 - first day of class, syllabus and such. It is good for you to take notes.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
The catalog description for this course is: "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." The two main goals are (a) being able to reason about computation (mathematical objects and algorithms), (b) familiarity with the topics listed in the description which are important in later courses.<br />
<br />
'''Course Outline'''<br />
* We will start the course by following along in the order of ''Building Blocks for Theoretical Computer Science'', see link above.<br />
<br />
'''Learning Outcomes'''<br />
* Basic math - ability to use basic algebra, properties of numbers, rules of exponents and logarithms<br />
* Proofs - understanding of what a proof is, ability to use the following methods of proof as needed - direct proof / by construction, by contradiction, by induction, by decomposition<br />
* Logic - ability to use the rules of logic (truth tables, DeMorgan's laws, etc.) in arguments<br />
* Integers - can use the properties of the integers to write algorithms and reason about their correctness<br />
* Sets, relations, functions - can apply the definitions of these concepts in proofs<br />
* Graphs, trees - understanding of standard definitions related to graphs and trees, able to argue basic properties<br />
* Asymptotic resource analysis (big-O) - can apply the definitions of big-O notation to compare different running time formulae, to simplify expressions, and to determine the big-O running time of algorithms<br />
* Complexity theory - understanding of definitions of basic complexity classes (L, P, NP, PSPACE, EXP), understanding of canonical problems in each class, can reason about these complexity classes<br />
* Notions of infinity - understanding of difference between countably and uncountably infinite, can use these in proofs<br />
* Probability - knowledge of basic definitions and properties of discrete probability, can apply to the analysis of randomized algorithms and processes<br />
* Regular languages - understanding of DFAs, NFAs, regular expressions and ability to produce models for commonly encountered languages<br />
* General models of computation - understanding of Turing-complete models of computation (Turing machine, circuits, programming languages) and implications<br />
* Computability - can give arguments whether a given problem is computable or not (e.g., the halting problem)<br />
* Notation - proper use of math notation (sets, logic, functions, summations, proofs, etc.)<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''D'''<br />
* Pass- or higher achievement for ''all'' of the following<br />
* Hello unix lab (at least 2/2)<br />
* Math notation (at least 80%)<br />
* Math bases (at least 80%)<br />
* Truth table proof (at least 1.5/2)<br />
* Proof that a number is irrational (at least 1.5/2)<br />
* Euclidean algorithm - demo of running the algorithm (at least 1.5/2)<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''C''' <br />
* Pass or higher achievement for ''all'' of the above (at least 90% on quizzes, at least 2/2 on assignment problems)<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''B'''<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''A'''<br />
* In addition to the above...<br />
* At least 1 puzzle/challenge problem solved correctly (pass rating)<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_303&diff=3741CS 3032023-02-01T11:57:38Z<p>Jkinne: /* Assignments */</p>
<hr />
<div>CS 303 Discrete Structures and Computing Theory is taken by CS majors after CS 151. <br />
<br />
This page contains the syllabus for CS 303 and is used to keep track of assignments, etc. as well for the most recent offering (spring 2023). For announcements, click the link in the table of contents.<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_303<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TBD<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' WF 10-10:50am, 1-1:50pm in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Monday, May 1, 10-11:50am and/or Wednesday, May 3 1-2:50pm <br> <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. <br />
<br />
'''Prerequisites''' - C or higher in CS 151.<br />
<br />
'''CRN numbers''' - 11380 for the 001 face to face section, 12450 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use selections from the following free online sources.<br />
* '''Primary text for the beginning of the course''' - '''[https://mfleck.cs.illinois.edu/building-blocks/index-sp2020.html Building Blocks for Theoretical Computer Science]''' by Margaret M. Fleck<br />
* [https://courses.csail.mit.edu/6.042/spring18/mcs.pdf Mathematics for Computer Science] by Eric Lehman, F Thomson Leighton, and Albert R Meyer<br />
* [https://cglab.ca/~michiel/TheoryOfComputation/TheoryOfComputation.pdf Introduction to Theory of Computation] by Anil Maheshwari and Michiel Smid<br />
* Additional sources - as needed<br />
** [https://en.wikipedia.org/wiki/Boolean_satisfiability_problem#3-satisfiability 3SAT NP-complete problem], [https://www.geeksforgeeks.org/proof-that-clique-decision-problem-is-np-complete/ Clique NP-complete problem], [https://cgi.csc.liv.ac.uk/~igor/COMP309/3CP.pdf 3 Coloring NP-complete problem]<br />
<br />
'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/Ei0RjIshxhlLmcwB-qhatPUBGDXtwXxc4O_-nVKPHoKrOw?e=yQKG51 CS 303 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.<br />
<br />
'''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 [https://teams.microsoft.com/l/team/19%3aFIaIH4p7m6BB3-VsZg5fx7SylggKoMt0rO7WHWqJbFk1%40thread.tacv2/conversations?groupId=6de93cd8-5594-4520-b014-7db43a7e9b4d&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 303 MS teams direct link]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
* '''h1 - [[Truth table proofs]]''' - both assignments 1 and 2 listed there. For which logical identity and which logical fallacy you need to do, see the lecture from Jan 27 when this was shared on screen. Due Feb 3.<br />
* '''q4 - [https://indstate.instructure.com/courses/12565/quizzes/231878 Logic]''' - that is the practice quiz. Jan 27, 1:25pm. Score stats: max, median, min, average = 100, 75, 25, 69.79166667. Time to take the quiz stats: max, median, min, average = 30, 23, 5, 22.04166667.<br />
* '''q3 - [https://indstate.instructure.com/courses/12565/quizzes/231882 Miscellaneous Math]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 25.94444444, 92.50529101. Time to take the quiz stats: max, median, min, average = 13, 5, 2, 6.142857143.<br />
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231879 Math and Bases]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 66.66666667, 97.10144928. Time to take the quiz stats: max, median, min, average = 13, 5, 3, 6.173913043.<br />
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231880/take Math Notation]''' - that link is a practice quiz, the real one will be in our course in Canvas. See also [[Math for CS Review]] for a study guide of sorts. Open book, open internet, not "open other person". Jan 13 around 1:25pm (quiz will be 1:25-1:50pm). Score stats: max, median, min, average = 100, 100, 87.75510204, 98.4028394. Time to take the quiz stats: max, median, min, average = 22, 7, 5, 9.52173913.<br />
<br />
==Announcements==<br />
* Jan 27 - Continuing with proofs in OneNote and BB. Introducing assignment h1. Taking the q4 logic quiz in the afternoon. Starting number theory (BB chapter 4).<br />
* Jan 20 - request to move the standard quiz day to be Wednesday. Nope, stick with Fridays.<br />
* Jan 20 - guest speaker for today, faculty candidate visiting today.<br />
* Jan 18 - reading assignment - Building Blocks chapters 3, 4.<br />
* Jan 18 - today's topic - Logic. See practice quiz above.<br />
* Jan 13 - q1 set so you can see your answers and the correct answers, and stats on the scores and total time taken are above. <br />
* Jan 13 - reading assignment - Building Blocks chapter 2.<br />
* Jan 13 - math notation, the graph questions. q1 math notation quiz. Continuing through math background, including material for q2 and q3 - see links above.<br />
* Jan 11 - note that q1 will be Friday, see above. In general for quizzes, no makeups, but you'll have a chance on the midterm to take it again.<br />
* Jan 11 - reading assignment - Building Blocks chapter 1. First quizzes - Friday 1-2pm.<br />
* Jan 11 - first day of class, syllabus and such. It is good for you to take notes.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
The catalog description for this course is: "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." The two main goals are (a) being able to reason about computation (mathematical objects and algorithms), (b) familiarity with the topics listed in the description which are important in later courses.<br />
<br />
'''Course Outline'''<br />
* We will start the course by following along in the order of ''Building Blocks for Theoretical Computer Science'', see link above.<br />
<br />
'''Learning Outcomes'''<br />
* Basic math - ability to use basic algebra, properties of numbers, rules of exponents and logarithms<br />
* Proofs - understanding of what a proof is, ability to use the following methods of proof as needed - direct proof / by construction, by contradiction, by induction, by decomposition<br />
* Logic - ability to use the rules of logic (truth tables, DeMorgan's laws, etc.) in arguments<br />
* Integers - can use the properties of the integers to write algorithms and reason about their correctness<br />
* Sets, relations, functions - can apply the definitions of these concepts in proofs<br />
* Graphs, trees - understanding of standard definitions related to graphs and trees, able to argue basic properties<br />
* Asymptotic resource analysis (big-O) - can apply the definitions of big-O notation to compare different running time formulae, to simplify expressions, and to determine the big-O running time of algorithms<br />
* Complexity theory - understanding of definitions of basic complexity classes (L, P, NP, PSPACE, EXP), understanding of canonical problems in each class, can reason about these complexity classes<br />
* Notions of infinity - understanding of difference between countably and uncountably infinite, can use these in proofs<br />
* Probability - knowledge of basic definitions and properties of discrete probability, can apply to the analysis of randomized algorithms and processes<br />
* Regular languages - understanding of DFAs, NFAs, regular expressions and ability to produce models for commonly encountered languages<br />
* General models of computation - understanding of Turing-complete models of computation (Turing machine, circuits, programming languages) and implications<br />
* Computability - can give arguments whether a given problem is computable or not (e.g., the halting problem)<br />
* Notation - proper use of math notation (sets, logic, functions, summations, proofs, etc.)<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''D'''<br />
* Pass- or higher achievement for ''all'' of the following<br />
* Hello unix lab (at least 2/2)<br />
* Math notation (at least 80%)<br />
* Math bases (at least 80%)<br />
* Truth table proof (at least 1.5/2)<br />
* Proof that a number is irrational (at least 1.5/2)<br />
* Euclidean algorithm - demo of running the algorithm (at least 1.5/2)<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''C''' <br />
* Pass or higher achievement for ''all'' of the above (at least 90% on quizzes, at least 2/2 on assignment problems)<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''B'''<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''A'''<br />
* In addition to the above...<br />
* At least 1 puzzle/challenge problem solved correctly (pass rating)<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_510&diff=3739CS 5102023-01-31T18:24:26Z<p>Jkinne: /* Assignments */</p>
<hr />
<div>This page contains the syllabus for CS 510 and is used to keep track of assignments, etc. as well for the most recent offering (fall 2022).<br />
<br />
CS 510 is Fast Track Introduction to Programming. The course has no pre-reqs (can be taken by those with no prior CS or programming experience) and is meant to (a) get you programming (in python), and (b) get you ready to pass the admissions interview (python programming and basic algorithms / data structures). CS 510 counts as elective credit towards the MS degree. The course is meant for current ISU students in non-CS programs and for potential incoming CS MS students who need the course to get ready for the CS MS.<br />
<br />
For more information on applying to the CS MS program, see http://cs.indstate.edu/info/apply.html<br />
<br />
=Who Should Register=<br />
'''Current ISU Students: '''<br />
For ISU grad students who are in non-CS programs, if you do not have much programming experience, CS 510 is your best starting point in CS coursework. If you are already a competent programmer in some language, then you likely would want to start with either [[CS 500]] or [https://cs.indstate.edu/~lmay1/courses/#/courses/cs401/home CS 501]. CS 500 is C and data structures and algorithms, while CS 501 is python and data science.<br />
<br />
'''Non-ISU Students: '''<br />
''Domestic students who are not quite ready to start the CS MS (or just aren't sure if they want to do a full MS) can [https://www.indstate.edu/cgps/graduate/apply/non-degree-application apply to ISU as a Guest/Unclassifed student]'' and take the course either face to face or online. To do this, click on the Apply button, click to create an account if this is your first time starting an application at ISU, choose Graduate when prompted between Graduate or Undergraduate, for the Field of Interest choose "Guest Admission / Unclassified", and for Program of Study choose "Guest Admission (One Semester Only)". Choose the term that you plan to take the course, and complete the remaining required fields. <br />
<br />
''International students outside of the US'' are not in general allowed to take courses online inside of the US without being enrolled in a degree program. International persons who are in the US on a visa of some type might be allowed to take the course (in particular, those on F2 or H4 likely would be allowed). Those who cannot take courses at ISU can check back here for course info (sample quizzes, reading assignments, programming assignments, tutorials, etc.) that will be posted publicly throughout the fall 2022 term. <br />
<br />
For those with no or little prior programming and CS experience, you are highly recommended to take this course to build your programming skills (and for those interested in a CS MS, to get you ready to apply to the CS MS program).<br />
<br />
=General Course Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_510<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TR 9am-noon, MWF 2-3pm<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' TR 12:30-1:45 over Zoom (in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Tuesday May 2, 1-2:50pm<br> <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. <br />
<br />
'''Prerequisites''' - none.<br />
<br />
'''CRN numbers''' - 13236<br />
<br />
'''Required text'''<br />
* We will use the following free online sources.<br />
* For python - '''[https://runestone.academy/ns/books/published/thinkcspy/index.html How to Think Like a Computer Scientist] (aka "Think CS")''', [https://docs.python.org/3/ Python Official Documentation], [https://pandas.pydata.org/docs/ Pandas Official Documentation]<br />
* For data structures and algorithms - '''[https://www.tutorialspoint.com/data_structures_algorithms/index.htm TutorialsPoint Data Structures and Algorithms]''', and we might supplement with the texts used in [[CS 500]].<br />
* 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<br />
* Additional sources - as needed.<br />
<br />
'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/Esopw95fVJZJlZ-cySXQWs4B3ZLC_Vwclet7bWeTaWgD9Q?e=7YDH4i CS 510 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.<br />
<br />
'''Code from lectures''' - Some code from lectures will be at https://cs.indstate.edu/~cs510/<br />
<br />
'''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 [https://teams.microsoft.com/l/team/19%3aPmUdc-sEsyjfX0aajYlut2aMxPant_3kuzqinCDfEIE1%40thread.tacv2/conversations?groupId=55159713-d7fe-4c81-91d5-3ea970cd1b8a&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 510 MS teams direct link]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
Note - each assignment has two listed "due dates" - the first is when I recommend you getting it done. The second is the "last chance" due date - I won't be grading things after that due date.<br />
<br />
For assignments where there is a wiki page link as the assignment, go to the section on the wiki page "Assignment" to see what you need to do. These are assignments that are used each semester.<br />
<br />
* '''h9_python''' - on the CS server. Due Feb 2/8.<br />
* '''h8_python''' - on the CS server. Due Jan 31/Feb 2.<br />
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231886 Python Operators and Expressions]''' - the link is to a practice quiz. <br />
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231885 Python Keywords and Data Types]''' - the link is to a practice quiz. <br />
* '''h7_python''' - on the CS server. Works similar to h5 nd h6. Due Jan 26/31.<br />
* '''h6_python''' - on the CS server. Works similar to h5_linux. Due Jan 19/24.<br />
* '''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 17/19<br />
* '''h4 - [[Text Editors]] Terminal'''. Due Jan 12/17.<br />
* '''h3 - [[Hello Unix Lab]]'''. Due Jan 12/17.<br />
* '''h2 - [[CS Server - Terminal]]'''. Due Jan 12/17.<br />
* '''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 12/17.<br />
<br />
==Announcements==<br />
* Jan 31 - questions on h8, q1, q2? Loops, conditionals/selection. Classic example programs. Introducing h9.<br />
* Jan 26 - pdf's of practice quizzes. Quizzes will be Wednesday, 20 minutes each, in canvas.<br />
* Jan 26 - h7 - note the grading comments in the README. q1 and q2 dates? Introducing h8. Think CS exercises - look at their code. <br />
* Jan 24 - pick up where we left off on bit operations, so now you should be able to do both of the Python quizzes (not just copy/paste but be able to evaluate the expressions yourself as well).<br />
* Jan 24 - h6 - comments on your submissions (make your program so what it prints matches the sample transcript in the README). h7 sample transcripts.<br />
* Jan 19 - more python programs, let's try a few of the quiz questions.<br />
* Jan 19 - h6 - updated the README with additional instructions so the files are copied over properly when you hand them in.<br />
* Jan 17 - reading assignment - Think CS up through chapter 8<br />
* Jan 17 - examples of using all Python keywords and operators, big picture of the main parts of any programming language - basic data types, arrays or lists, loops, functions, selection, modules.<br />
* Jan 17 - note on reading Think CS - recommendation is to try all exercises and questions as you read. This is especially important for those who are not experienced programmers already. I may not test you on these, but you will only get the understanding you need by doing extra work like this.<br />
* Jan 17 - at some point we will have a quiz over using the Linux terminal. For now, you can use the Linux Terminal pages linked from [[Linux and CS Systems - Getting Started]] as a reference. <br />
* Jan 17 - note that we will be having quizzes over python basics probably next week. You can already try out the practice quizzes: [https://indstate.instructure.com/courses/12565/quizzes/231885 python keywords and data types], and [https://indstate.instructure.com/courses/12565/quizzes/231886 python operators and expressions].<br />
* Jan 12 - reading assignment - Think CS - chapter 1 (read through in one sitting), chapter 2 (get started). Note that there may be quizzes over the bold terms and concepts from Think CS (so pay attention to those, and take notes of things that are new to you).<br />
* Jan 12 - new hw assignment - h5, see today's lecture.<br />
* Jan 12 - reading assignment - [[Linux and CS Systems - Getting Started]] and the pages linked from there. We will have a quiz over the Linux commands next week.<br />
* Jan 10, 2023 - first day of class - how the class will work, class website, setting up your computer to get started.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
The catalog description for this course is: "A compressed introduction to programming in a specific language for the purpose of assisting student to become competent programmers in the language quickly." '''However''', the course is being changed so that it clearly is for an audience without much CS or programming background, and so that one of its outcomes is to help those interested in a CS MS to be able to pass the ISU CS MS admissions interview process.<br />
<br />
The following is the plan as we start the semester. As this is the first time for this course to be offered in this way, I will be updating this as we make our way through the term.<br />
<br />
'''Course Outline'''<br />
* Getting started - system setup, linux, math background, development on your personal computer.<br />
* Python programming basics - operators, reserved words, data types, base systems, overflow.<br />
* Python programming containers - strings, tuples, lists, dictionaries, sets.<br />
* Python programming object-oriented<br />
* Python programming style - good programming style for reliability, readability, extensibility, security.<br />
* Data structures - understanding/use of most important data structures - arrays, linked lists, binary search trees, hash tables, heaps. Implementation of some of these in Python.<br />
* Algorithms - understanding/use of some basic algorithms - sorting (various), binary/linear search (and uses) - including some algorithms that are each of - greedy, heuristic, randomized, brute force / backtracking.<br />
* Vocab - additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''Learning Outcomes'''<br />
* System setup - personal computer setup for both remote (connecting to CS server with terminal, sftp, X windows) and local development (editor, compiler/interpreter).<br />
* Linux - proficient using the Linux terminal for development.<br />
* Math background - proficient in math background needed for data structures and algorithms.<br />
* Personal computer - is setup for development so you can do coursework from your home computer as well.<br />
* Python programming - understanding of most language features, proficient in writing code using the most common, write code using good programming style.<br />
* Data structures - understanding of operations, efficiency, use cases, can use builtin python data structures and write python code for some data structures that are not included in python.<br />
* Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the algorithms to solve problems efficiently.<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''C - lowest passing grade in a grad course''' <br />
* Pass or higher achievement for ''all'' of the following<br />
* Terminal text editors - basic use<br />
* Linux terminal commands, files - basic use<br />
* Math for CS basics (base systems, rules of exponents, logs, logic)<br />
* Python - basic development in the terminal on the CS server<br />
* Python - basic development on your personal computer<br />
* Text editor - on your personal computer<br />
* File transfers - between personal computer and CS server<br />
* Python programming basics - knowledge of keywords, concepts, operators, evaluation of expressions<br />
* Python programming containers - knowledge of basic operations on tuples, lists, sets, dictionaries<br />
<br />
'''B - satisfactory'''<br />
* In addition to the above...<br />
* Object-oriented programming in python<br />
* Python programming style - good programming style for reliability, readability, extensibility, security.<br />
* Data structures - good understanding of how operations are implemented for - arrays, linked lists, binary search trees, hash tables, heaps. Able to properly "play computer" with these.<br />
* Algorithms - good understanding of several linear and binary search, several sorting algorithms (including one efficient one).<br />
* Vocab - some additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''A - good/excellent'''<br />
* In addition to the above...<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* Basic data structures from B level - can write python code to implement the data structures.<br />
* Algorithms - can write python code to implement linear and binary search, several sorting algorithms (including one efficient one).<br />
* Algorithms - good understanding of some algorithms for each of - greedy, heuristic, randomized, brute force / backtracking.<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.'''<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_510&diff=3738CS 5102023-01-31T18:24:11Z<p>Jkinne: /* Assignments */</p>
<hr />
<div>This page contains the syllabus for CS 510 and is used to keep track of assignments, etc. as well for the most recent offering (fall 2022).<br />
<br />
CS 510 is Fast Track Introduction to Programming. The course has no pre-reqs (can be taken by those with no prior CS or programming experience) and is meant to (a) get you programming (in python), and (b) get you ready to pass the admissions interview (python programming and basic algorithms / data structures). CS 510 counts as elective credit towards the MS degree. The course is meant for current ISU students in non-CS programs and for potential incoming CS MS students who need the course to get ready for the CS MS.<br />
<br />
For more information on applying to the CS MS program, see http://cs.indstate.edu/info/apply.html<br />
<br />
=Who Should Register=<br />
'''Current ISU Students: '''<br />
For ISU grad students who are in non-CS programs, if you do not have much programming experience, CS 510 is your best starting point in CS coursework. If you are already a competent programmer in some language, then you likely would want to start with either [[CS 500]] or [https://cs.indstate.edu/~lmay1/courses/#/courses/cs401/home CS 501]. CS 500 is C and data structures and algorithms, while CS 501 is python and data science.<br />
<br />
'''Non-ISU Students: '''<br />
''Domestic students who are not quite ready to start the CS MS (or just aren't sure if they want to do a full MS) can [https://www.indstate.edu/cgps/graduate/apply/non-degree-application apply to ISU as a Guest/Unclassifed student]'' and take the course either face to face or online. To do this, click on the Apply button, click to create an account if this is your first time starting an application at ISU, choose Graduate when prompted between Graduate or Undergraduate, for the Field of Interest choose "Guest Admission / Unclassified", and for Program of Study choose "Guest Admission (One Semester Only)". Choose the term that you plan to take the course, and complete the remaining required fields. <br />
<br />
''International students outside of the US'' are not in general allowed to take courses online inside of the US without being enrolled in a degree program. International persons who are in the US on a visa of some type might be allowed to take the course (in particular, those on F2 or H4 likely would be allowed). Those who cannot take courses at ISU can check back here for course info (sample quizzes, reading assignments, programming assignments, tutorials, etc.) that will be posted publicly throughout the fall 2022 term. <br />
<br />
For those with no or little prior programming and CS experience, you are highly recommended to take this course to build your programming skills (and for those interested in a CS MS, to get you ready to apply to the CS MS program).<br />
<br />
=General Course Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_510<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TR 9am-noon, MWF 2-3pm<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' TR 12:30-1:45 over Zoom (in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Tuesday May 2, 1-2:50pm<br> <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. <br />
<br />
'''Prerequisites''' - none.<br />
<br />
'''CRN numbers''' - 13236<br />
<br />
'''Required text'''<br />
* We will use the following free online sources.<br />
* For python - '''[https://runestone.academy/ns/books/published/thinkcspy/index.html How to Think Like a Computer Scientist] (aka "Think CS")''', [https://docs.python.org/3/ Python Official Documentation], [https://pandas.pydata.org/docs/ Pandas Official Documentation]<br />
* For data structures and algorithms - '''[https://www.tutorialspoint.com/data_structures_algorithms/index.htm TutorialsPoint Data Structures and Algorithms]''', and we might supplement with the texts used in [[CS 500]].<br />
* 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<br />
* Additional sources - as needed.<br />
<br />
'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/Esopw95fVJZJlZ-cySXQWs4B3ZLC_Vwclet7bWeTaWgD9Q?e=7YDH4i CS 510 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.<br />
<br />
'''Code from lectures''' - Some code from lectures will be at https://cs.indstate.edu/~cs510/<br />
<br />
'''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 [https://teams.microsoft.com/l/team/19%3aPmUdc-sEsyjfX0aajYlut2aMxPant_3kuzqinCDfEIE1%40thread.tacv2/conversations?groupId=55159713-d7fe-4c81-91d5-3ea970cd1b8a&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 510 MS teams direct link]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
Note - each assignment has two listed "due dates" - the first is when I recommend you getting it done. The second is the "last chance" due date - I won't be grading things after that due date.<br />
<br />
For assignments where there is a wiki page link as the assignment, go to the section on the wiki page "Assignment" to see what you need to do. These are assignments that are used each semester.<br />
<br />
* '''h9_python''' - on the CS server. Due Feb 2/8.'<br />
* '''h8_python''' - on the CS server. Due Jan 31/Feb 2.<br />
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231886 Python Operators and Expressions]''' - the link is to a practice quiz. <br />
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231885 Python Keywords and Data Types]''' - the link is to a practice quiz. <br />
* '''h7_python''' - on the CS server. Works similar to h5 nd h6. Due Jan 26/31.<br />
* '''h6_python''' - on the CS server. Works similar to h5_linux. Due Jan 19/24.<br />
* '''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 17/19<br />
* '''h4 - [[Text Editors]] Terminal'''. Due Jan 12/17.<br />
* '''h3 - [[Hello Unix Lab]]'''. Due Jan 12/17.<br />
* '''h2 - [[CS Server - Terminal]]'''. Due Jan 12/17.<br />
* '''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 12/17.<br />
<br />
==Announcements==<br />
* Jan 31 - questions on h8, q1, q2? Loops, conditionals/selection. Classic example programs. Introducing h9.<br />
* Jan 26 - pdf's of practice quizzes. Quizzes will be Wednesday, 20 minutes each, in canvas.<br />
* Jan 26 - h7 - note the grading comments in the README. q1 and q2 dates? Introducing h8. Think CS exercises - look at their code. <br />
* Jan 24 - pick up where we left off on bit operations, so now you should be able to do both of the Python quizzes (not just copy/paste but be able to evaluate the expressions yourself as well).<br />
* Jan 24 - h6 - comments on your submissions (make your program so what it prints matches the sample transcript in the README). h7 sample transcripts.<br />
* Jan 19 - more python programs, let's try a few of the quiz questions.<br />
* Jan 19 - h6 - updated the README with additional instructions so the files are copied over properly when you hand them in.<br />
* Jan 17 - reading assignment - Think CS up through chapter 8<br />
* Jan 17 - examples of using all Python keywords and operators, big picture of the main parts of any programming language - basic data types, arrays or lists, loops, functions, selection, modules.<br />
* Jan 17 - note on reading Think CS - recommendation is to try all exercises and questions as you read. This is especially important for those who are not experienced programmers already. I may not test you on these, but you will only get the understanding you need by doing extra work like this.<br />
* Jan 17 - at some point we will have a quiz over using the Linux terminal. For now, you can use the Linux Terminal pages linked from [[Linux and CS Systems - Getting Started]] as a reference. <br />
* Jan 17 - note that we will be having quizzes over python basics probably next week. You can already try out the practice quizzes: [https://indstate.instructure.com/courses/12565/quizzes/231885 python keywords and data types], and [https://indstate.instructure.com/courses/12565/quizzes/231886 python operators and expressions].<br />
* Jan 12 - reading assignment - Think CS - chapter 1 (read through in one sitting), chapter 2 (get started). Note that there may be quizzes over the bold terms and concepts from Think CS (so pay attention to those, and take notes of things that are new to you).<br />
* Jan 12 - new hw assignment - h5, see today's lecture.<br />
* Jan 12 - reading assignment - [[Linux and CS Systems - Getting Started]] and the pages linked from there. We will have a quiz over the Linux commands next week.<br />
* Jan 10, 2023 - first day of class - how the class will work, class website, setting up your computer to get started.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
The catalog description for this course is: "A compressed introduction to programming in a specific language for the purpose of assisting student to become competent programmers in the language quickly." '''However''', the course is being changed so that it clearly is for an audience without much CS or programming background, and so that one of its outcomes is to help those interested in a CS MS to be able to pass the ISU CS MS admissions interview process.<br />
<br />
The following is the plan as we start the semester. As this is the first time for this course to be offered in this way, I will be updating this as we make our way through the term.<br />
<br />
'''Course Outline'''<br />
* Getting started - system setup, linux, math background, development on your personal computer.<br />
* Python programming basics - operators, reserved words, data types, base systems, overflow.<br />
* Python programming containers - strings, tuples, lists, dictionaries, sets.<br />
* Python programming object-oriented<br />
* Python programming style - good programming style for reliability, readability, extensibility, security.<br />
* Data structures - understanding/use of most important data structures - arrays, linked lists, binary search trees, hash tables, heaps. Implementation of some of these in Python.<br />
* Algorithms - understanding/use of some basic algorithms - sorting (various), binary/linear search (and uses) - including some algorithms that are each of - greedy, heuristic, randomized, brute force / backtracking.<br />
* Vocab - additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''Learning Outcomes'''<br />
* System setup - personal computer setup for both remote (connecting to CS server with terminal, sftp, X windows) and local development (editor, compiler/interpreter).<br />
* Linux - proficient using the Linux terminal for development.<br />
* Math background - proficient in math background needed for data structures and algorithms.<br />
* Personal computer - is setup for development so you can do coursework from your home computer as well.<br />
* Python programming - understanding of most language features, proficient in writing code using the most common, write code using good programming style.<br />
* Data structures - understanding of operations, efficiency, use cases, can use builtin python data structures and write python code for some data structures that are not included in python.<br />
* Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the algorithms to solve problems efficiently.<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''C - lowest passing grade in a grad course''' <br />
* Pass or higher achievement for ''all'' of the following<br />
* Terminal text editors - basic use<br />
* Linux terminal commands, files - basic use<br />
* Math for CS basics (base systems, rules of exponents, logs, logic)<br />
* Python - basic development in the terminal on the CS server<br />
* Python - basic development on your personal computer<br />
* Text editor - on your personal computer<br />
* File transfers - between personal computer and CS server<br />
* Python programming basics - knowledge of keywords, concepts, operators, evaluation of expressions<br />
* Python programming containers - knowledge of basic operations on tuples, lists, sets, dictionaries<br />
<br />
'''B - satisfactory'''<br />
* In addition to the above...<br />
* Object-oriented programming in python<br />
* Python programming style - good programming style for reliability, readability, extensibility, security.<br />
* Data structures - good understanding of how operations are implemented for - arrays, linked lists, binary search trees, hash tables, heaps. Able to properly "play computer" with these.<br />
* Algorithms - good understanding of several linear and binary search, several sorting algorithms (including one efficient one).<br />
* Vocab - some additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''A - good/excellent'''<br />
* In addition to the above...<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* Basic data structures from B level - can write python code to implement the data structures.<br />
* Algorithms - can write python code to implement linear and binary search, several sorting algorithms (including one efficient one).<br />
* Algorithms - good understanding of some algorithms for each of - greedy, heuristic, randomized, brute force / backtracking.<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.'''<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_510&diff=3737CS 5102023-01-31T17:32:15Z<p>Jkinne: /* Announcements */</p>
<hr />
<div>This page contains the syllabus for CS 510 and is used to keep track of assignments, etc. as well for the most recent offering (fall 2022).<br />
<br />
CS 510 is Fast Track Introduction to Programming. The course has no pre-reqs (can be taken by those with no prior CS or programming experience) and is meant to (a) get you programming (in python), and (b) get you ready to pass the admissions interview (python programming and basic algorithms / data structures). CS 510 counts as elective credit towards the MS degree. The course is meant for current ISU students in non-CS programs and for potential incoming CS MS students who need the course to get ready for the CS MS.<br />
<br />
For more information on applying to the CS MS program, see http://cs.indstate.edu/info/apply.html<br />
<br />
=Who Should Register=<br />
'''Current ISU Students: '''<br />
For ISU grad students who are in non-CS programs, if you do not have much programming experience, CS 510 is your best starting point in CS coursework. If you are already a competent programmer in some language, then you likely would want to start with either [[CS 500]] or [https://cs.indstate.edu/~lmay1/courses/#/courses/cs401/home CS 501]. CS 500 is C and data structures and algorithms, while CS 501 is python and data science.<br />
<br />
'''Non-ISU Students: '''<br />
''Domestic students who are not quite ready to start the CS MS (or just aren't sure if they want to do a full MS) can [https://www.indstate.edu/cgps/graduate/apply/non-degree-application apply to ISU as a Guest/Unclassifed student]'' and take the course either face to face or online. To do this, click on the Apply button, click to create an account if this is your first time starting an application at ISU, choose Graduate when prompted between Graduate or Undergraduate, for the Field of Interest choose "Guest Admission / Unclassified", and for Program of Study choose "Guest Admission (One Semester Only)". Choose the term that you plan to take the course, and complete the remaining required fields. <br />
<br />
''International students outside of the US'' are not in general allowed to take courses online inside of the US without being enrolled in a degree program. International persons who are in the US on a visa of some type might be allowed to take the course (in particular, those on F2 or H4 likely would be allowed). Those who cannot take courses at ISU can check back here for course info (sample quizzes, reading assignments, programming assignments, tutorials, etc.) that will be posted publicly throughout the fall 2022 term. <br />
<br />
For those with no or little prior programming and CS experience, you are highly recommended to take this course to build your programming skills (and for those interested in a CS MS, to get you ready to apply to the CS MS program).<br />
<br />
=General Course Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_510<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TR 9am-noon, MWF 2-3pm<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' TR 12:30-1:45 over Zoom (in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Tuesday May 2, 1-2:50pm<br> <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. <br />
<br />
'''Prerequisites''' - none.<br />
<br />
'''CRN numbers''' - 13236<br />
<br />
'''Required text'''<br />
* We will use the following free online sources.<br />
* For python - '''[https://runestone.academy/ns/books/published/thinkcspy/index.html How to Think Like a Computer Scientist] (aka "Think CS")''', [https://docs.python.org/3/ Python Official Documentation], [https://pandas.pydata.org/docs/ Pandas Official Documentation]<br />
* For data structures and algorithms - '''[https://www.tutorialspoint.com/data_structures_algorithms/index.htm TutorialsPoint Data Structures and Algorithms]''', and we might supplement with the texts used in [[CS 500]].<br />
* 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<br />
* Additional sources - as needed.<br />
<br />
'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/Esopw95fVJZJlZ-cySXQWs4B3ZLC_Vwclet7bWeTaWgD9Q?e=7YDH4i CS 510 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.<br />
<br />
'''Code from lectures''' - Some code from lectures will be at https://cs.indstate.edu/~cs510/<br />
<br />
'''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 [https://teams.microsoft.com/l/team/19%3aPmUdc-sEsyjfX0aajYlut2aMxPant_3kuzqinCDfEIE1%40thread.tacv2/conversations?groupId=55159713-d7fe-4c81-91d5-3ea970cd1b8a&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 510 MS teams direct link]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
Note - each assignment has two listed "due dates" - the first is when I recommend you getting it done. The second is the "last chance" due date - I won't be grading things after that due date.<br />
<br />
For assignments where there is a wiki page link as the assignment, go to the section on the wiki page "Assignment" to see what you need to do. These are assignments that are used each semester.<br />
<br />
* '''h8_python''' - on the CS server. Due Jan 31/Feb 2.<br />
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231886 Python Operators and Expressions]''' - the link is to a practice quiz. <br />
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231885 Python Keywords and Data Types]''' - the link is to a practice quiz. <br />
* '''h7_python''' - on the CS server. Works similar to h5 nd h6. Due Jan 26/31.<br />
* '''h6_python''' - on the CS server. Works similar to h5_linux. Due Jan 19/24.<br />
* '''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 17/19<br />
* '''h4 - [[Text Editors]] Terminal'''. Due Jan 12/17.<br />
* '''h3 - [[Hello Unix Lab]]'''. Due Jan 12/17.<br />
* '''h2 - [[CS Server - Terminal]]'''. Due Jan 12/17.<br />
* '''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 12/17.<br />
<br />
==Announcements==<br />
* Jan 31 - questions on h8, q1, q2? Loops, conditionals/selection. Classic example programs. Introducing h9.<br />
* Jan 26 - pdf's of practice quizzes. Quizzes will be Wednesday, 20 minutes each, in canvas.<br />
* Jan 26 - h7 - note the grading comments in the README. q1 and q2 dates? Introducing h8. Think CS exercises - look at their code. <br />
* Jan 24 - pick up where we left off on bit operations, so now you should be able to do both of the Python quizzes (not just copy/paste but be able to evaluate the expressions yourself as well).<br />
* Jan 24 - h6 - comments on your submissions (make your program so what it prints matches the sample transcript in the README). h7 sample transcripts.<br />
* Jan 19 - more python programs, let's try a few of the quiz questions.<br />
* Jan 19 - h6 - updated the README with additional instructions so the files are copied over properly when you hand them in.<br />
* Jan 17 - reading assignment - Think CS up through chapter 8<br />
* Jan 17 - examples of using all Python keywords and operators, big picture of the main parts of any programming language - basic data types, arrays or lists, loops, functions, selection, modules.<br />
* Jan 17 - note on reading Think CS - recommendation is to try all exercises and questions as you read. This is especially important for those who are not experienced programmers already. I may not test you on these, but you will only get the understanding you need by doing extra work like this.<br />
* Jan 17 - at some point we will have a quiz over using the Linux terminal. For now, you can use the Linux Terminal pages linked from [[Linux and CS Systems - Getting Started]] as a reference. <br />
* Jan 17 - note that we will be having quizzes over python basics probably next week. You can already try out the practice quizzes: [https://indstate.instructure.com/courses/12565/quizzes/231885 python keywords and data types], and [https://indstate.instructure.com/courses/12565/quizzes/231886 python operators and expressions].<br />
* Jan 12 - reading assignment - Think CS - chapter 1 (read through in one sitting), chapter 2 (get started). Note that there may be quizzes over the bold terms and concepts from Think CS (so pay attention to those, and take notes of things that are new to you).<br />
* Jan 12 - new hw assignment - h5, see today's lecture.<br />
* Jan 12 - reading assignment - [[Linux and CS Systems - Getting Started]] and the pages linked from there. We will have a quiz over the Linux commands next week.<br />
* Jan 10, 2023 - first day of class - how the class will work, class website, setting up your computer to get started.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
The catalog description for this course is: "A compressed introduction to programming in a specific language for the purpose of assisting student to become competent programmers in the language quickly." '''However''', the course is being changed so that it clearly is for an audience without much CS or programming background, and so that one of its outcomes is to help those interested in a CS MS to be able to pass the ISU CS MS admissions interview process.<br />
<br />
The following is the plan as we start the semester. As this is the first time for this course to be offered in this way, I will be updating this as we make our way through the term.<br />
<br />
'''Course Outline'''<br />
* Getting started - system setup, linux, math background, development on your personal computer.<br />
* Python programming basics - operators, reserved words, data types, base systems, overflow.<br />
* Python programming containers - strings, tuples, lists, dictionaries, sets.<br />
* Python programming object-oriented<br />
* Python programming style - good programming style for reliability, readability, extensibility, security.<br />
* Data structures - understanding/use of most important data structures - arrays, linked lists, binary search trees, hash tables, heaps. Implementation of some of these in Python.<br />
* Algorithms - understanding/use of some basic algorithms - sorting (various), binary/linear search (and uses) - including some algorithms that are each of - greedy, heuristic, randomized, brute force / backtracking.<br />
* Vocab - additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''Learning Outcomes'''<br />
* System setup - personal computer setup for both remote (connecting to CS server with terminal, sftp, X windows) and local development (editor, compiler/interpreter).<br />
* Linux - proficient using the Linux terminal for development.<br />
* Math background - proficient in math background needed for data structures and algorithms.<br />
* Personal computer - is setup for development so you can do coursework from your home computer as well.<br />
* Python programming - understanding of most language features, proficient in writing code using the most common, write code using good programming style.<br />
* Data structures - understanding of operations, efficiency, use cases, can use builtin python data structures and write python code for some data structures that are not included in python.<br />
* Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the algorithms to solve problems efficiently.<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''C - lowest passing grade in a grad course''' <br />
* Pass or higher achievement for ''all'' of the following<br />
* Terminal text editors - basic use<br />
* Linux terminal commands, files - basic use<br />
* Math for CS basics (base systems, rules of exponents, logs, logic)<br />
* Python - basic development in the terminal on the CS server<br />
* Python - basic development on your personal computer<br />
* Text editor - on your personal computer<br />
* File transfers - between personal computer and CS server<br />
* Python programming basics - knowledge of keywords, concepts, operators, evaluation of expressions<br />
* Python programming containers - knowledge of basic operations on tuples, lists, sets, dictionaries<br />
<br />
'''B - satisfactory'''<br />
* In addition to the above...<br />
* Object-oriented programming in python<br />
* Python programming style - good programming style for reliability, readability, extensibility, security.<br />
* Data structures - good understanding of how operations are implemented for - arrays, linked lists, binary search trees, hash tables, heaps. Able to properly "play computer" with these.<br />
* Algorithms - good understanding of several linear and binary search, several sorting algorithms (including one efficient one).<br />
* Vocab - some additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''A - good/excellent'''<br />
* In addition to the above...<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* Basic data structures from B level - can write python code to implement the data structures.<br />
* Algorithms - can write python code to implement linear and binary search, several sorting algorithms (including one efficient one).<br />
* Algorithms - good understanding of some algorithms for each of - greedy, heuristic, randomized, brute force / backtracking.<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.'''<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_500&diff=3736CS 5002023-01-30T15:35:14Z<p>Jkinne: /* Announcements */</p>
<hr />
<div>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. <br />
<br />
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.<br />
<br />
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).<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_500<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TR 9am-noon, MWF 2-3pm<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' MWF 11-11:50am in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Friday, May 5 10-11:50am <br> <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. <br />
<br />
'''Prerequisites''' - admission to the CS MS program or approval of instructor, should be a competent programmer in some programming language.<br />
<br />
'''CRN numbers''' - 11401 for the 001 face to face section, 12108 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use the following free online sources.<br />
* 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<br />
* 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<br />
* 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<br />
* Additional sources - as needed.<br />
<br />
'''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>.<br />
<br />
'''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<br />
[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]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
<br />
* '''q4''' - will be over Linux terminal commands and using the terminal.<br />
* '''h8_C''' - will be either chess game started in class, or another bunch of small C programs.<br />
* '''h7_C''' - will be either chess game started in class, or another bunch of small C programs.<br />
* '''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.<br />
* '''q3 - [https://indstate.instructure.com/courses/12565/quizzes/231870 C Errors]''' - that is a link to a practice quiz. In class on Jan 23.<br />
* '''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.<br />
* '''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.<br />
* '''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<br />
* '''h4 - [[Text Editors]] Terminal'''. Due Jan 13/18.<br />
* '''h3 - [[Hello Unix Lab]]'''. Due Jan 13/18.<br />
* '''h2 - [[CS Server - Terminal]]'''. Due Jan 13/18.<br />
* '''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.<br />
<br />
==Announcements==<br />
* Feb 1 - retakes on q1, q2, q3.<br />
* 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.<br />
* Jan 30 - questions on h6. introducing - chess game (will be a hw assignment).<br />
* Jan 27 - Finish loop_stdin.c, and continue on. Introducing assignment h6_C.<br />
* Jan 23 - quizzes q1, q2, q3.<br />
* Jan 20 - see the terminal stuff linked from [[Linux and CS Systems - Getting Started]]<br />
* Jan 20 - continuing with C examples, note that the quizzes q1-q3 will be Monday.<br />
* 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, ...).<br />
* Jan 13 - Introducing h5. Quizzes q1, q2, q3 in one week. Reading assignment - Essential C (all of it). See also - [[C Basics]]<br />
* 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.<br />
* Jan 11 - first day of class, syllabus, etc.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
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.<br />
<br />
'''Course Outline'''<br />
* Getting started - system setup, git, linux, bash, make, apache, math background, development on your personal computer.<br />
* C programming basics - operators, reserved words, data types, base systems, overflow.<br />
* C programming strings - manipulation of C strings.<br />
* C programming memory management - different types of memory in C, how to use them, pros and cons.<br />
* C programming style - good programming style for reliability, readability, extensibility, security.<br />
* 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.<br />
* 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.<br />
* Vocab - additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''Learning Outcomes'''<br />
* System setup - personal computer setup for both remote (connecting to CS server with terminal, sftp, X windows) and local development (editor, compiler).<br />
* Git - basic use of git for source code management.<br />
* Linux - proficient using the Linux terminal for development.<br />
* Bash - basic use of bash scripts for testing code.<br />
* Make - basic use of GNU make for compiling code.<br />
* Apache - able to post content to your CS accounts to be viewable over the web.<br />
* Math background - proficient in math background needed for data structures and algorithms.<br />
* Personal computer - is setup for development so you can do coursework from your home computer as well.<br />
* C programming - understanding of all language features, proficient in writing code using the most common, write code using good programming style.<br />
* Data structures - understanding of operations, efficiency, use cases, can write code in C for data structure operations.<br />
* Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the right algorithms to solve problems efficiently.<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''C - lowest passing grade in a grad course''' <br />
* Pass or higher achievement for ''all'' of the following<br />
* System setup, git, linux, bash, make, apache, math background, personal computer<br />
* C programming basics<br />
* Data structures basic understanding - arrays (stack and queue), linked lists (stack and queue), binary search trees, hash tables<br />
* Data structures programming - can write the code for methods for ''some'' of the above<br />
* Data structures programming - can use ''some'' of the above data structures to solve problems<br />
* Sorting algorithms - basic understanding of at least one slow and at least one efficient sorting algorithm<br />
* Sorting algorithms - can write the code for at least one sorting algorithm<br />
* Algorithm techniques - basic understanding of ''at least one'' greedy, divide and conquer, brute force, and dynamic programming algorithm.<br />
* Asymptotic resource usage - basic understanding, can use Jeff's rules of thumb in simplifying expressions<br />
<br />
'''B - satisfactory'''<br />
* In addition to the above...<br />
* Data structures programming - can write the code for methods for ''most'' of the "C grade" basic data structures<br />
* Data structures programming - can use ''most'' of the "C grade" basic data structures to solve problems<br />
* Data structures basic understanding - skip list, red black trees, heap, B tree<br />
* Sorting algorithms - can write the code for at least one slow and at least one efficient sorting algorithm<br />
* Sorting algorithms - basic understanding of multiple slow and multiple efficient sorting algorithms<br />
* Graph algorithms - basic understanding of the adjacency lists, adjacency matrices, graph algorithms DFS and BFS<br />
* 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<br />
<br />
'''A - good/excellent'''<br />
* In addition to the above...<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* Graph algorithms - can write the code for some of the "B level" graph algorithms<br />
* Graph algorithms - basic understanding of an MST algorithm and shortest path algorithm<br />
* Asymptotic resource usage - can apply the master theorem ''and'' recursion tree methods to recursive resource formulae<br />
* Integer algorithms - basic understanding of faster-than-obvious multiplication and exponentiation algorithms<br />
* Algorithm techniques - can write code for at least one algorithm for each of the "C level" algorithm techniques<br />
* Algorithm techniques - basic understanding of ''multiple'' algorithms for each of the "C level" algorithm techniques<br />
* Complexity theory - basic understanding of the definitions of L, P, NP, PSPACE, EXP and a few canonical problems in each<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.'''<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_500&diff=3735CS 5002023-01-30T14:33:06Z<p>Jkinne: /* Announcements */</p>
<hr />
<div>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. <br />
<br />
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.<br />
<br />
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).<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_500<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TR 9am-noon, MWF 2-3pm<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' MWF 11-11:50am in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Friday, May 5 10-11:50am <br> <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. <br />
<br />
'''Prerequisites''' - admission to the CS MS program or approval of instructor, should be a competent programmer in some programming language.<br />
<br />
'''CRN numbers''' - 11401 for the 001 face to face section, 12108 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use the following free online sources.<br />
* 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<br />
* 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<br />
* 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<br />
* Additional sources - as needed.<br />
<br />
'''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>.<br />
<br />
'''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<br />
[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]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
<br />
* '''q4''' - will be over Linux terminal commands and using the terminal.<br />
* '''h8_C''' - will be either chess game started in class, or another bunch of small C programs.<br />
* '''h7_C''' - will be either chess game started in class, or another bunch of small C programs.<br />
* '''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.<br />
* '''q3 - [https://indstate.instructure.com/courses/12565/quizzes/231870 C Errors]''' - that is a link to a practice quiz. In class on Jan 23.<br />
* '''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.<br />
* '''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.<br />
* '''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<br />
* '''h4 - [[Text Editors]] Terminal'''. Due Jan 13/18.<br />
* '''h3 - [[Hello Unix Lab]]'''. Due Jan 13/18.<br />
* '''h2 - [[CS Server - Terminal]]'''. Due Jan 13/18.<br />
* '''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.<br />
<br />
==Announcements==<br />
* Feb 1 - retakes on q1, q2, q3.<br />
* Jan 30 - reminder to visit the lab for h3 and h4 if you don't have a grade yet for these in canvas.<br />
* Jan 30 - questions on h6. introducing - chess game (will be a hw assignment).<br />
* Jan 27 - Finish loop_stdin.c, and continue on. Introducing assignment h6_C.<br />
* Jan 23 - quizzes q1, q2, q3.<br />
* Jan 20 - see the terminal stuff linked from [[Linux and CS Systems - Getting Started]]<br />
* Jan 20 - continuing with C examples, note that the quizzes q1-q3 will be Monday.<br />
* 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, ...).<br />
* Jan 13 - Introducing h5. Quizzes q1, q2, q3 in one week. Reading assignment - Essential C (all of it). See also - [[C Basics]]<br />
* 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.<br />
* Jan 11 - first day of class, syllabus, etc.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
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.<br />
<br />
'''Course Outline'''<br />
* Getting started - system setup, git, linux, bash, make, apache, math background, development on your personal computer.<br />
* C programming basics - operators, reserved words, data types, base systems, overflow.<br />
* C programming strings - manipulation of C strings.<br />
* C programming memory management - different types of memory in C, how to use them, pros and cons.<br />
* C programming style - good programming style for reliability, readability, extensibility, security.<br />
* 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.<br />
* 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.<br />
* Vocab - additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''Learning Outcomes'''<br />
* System setup - personal computer setup for both remote (connecting to CS server with terminal, sftp, X windows) and local development (editor, compiler).<br />
* Git - basic use of git for source code management.<br />
* Linux - proficient using the Linux terminal for development.<br />
* Bash - basic use of bash scripts for testing code.<br />
* Make - basic use of GNU make for compiling code.<br />
* Apache - able to post content to your CS accounts to be viewable over the web.<br />
* Math background - proficient in math background needed for data structures and algorithms.<br />
* Personal computer - is setup for development so you can do coursework from your home computer as well.<br />
* C programming - understanding of all language features, proficient in writing code using the most common, write code using good programming style.<br />
* Data structures - understanding of operations, efficiency, use cases, can write code in C for data structure operations.<br />
* Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the right algorithms to solve problems efficiently.<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''C - lowest passing grade in a grad course''' <br />
* Pass or higher achievement for ''all'' of the following<br />
* System setup, git, linux, bash, make, apache, math background, personal computer<br />
* C programming basics<br />
* Data structures basic understanding - arrays (stack and queue), linked lists (stack and queue), binary search trees, hash tables<br />
* Data structures programming - can write the code for methods for ''some'' of the above<br />
* Data structures programming - can use ''some'' of the above data structures to solve problems<br />
* Sorting algorithms - basic understanding of at least one slow and at least one efficient sorting algorithm<br />
* Sorting algorithms - can write the code for at least one sorting algorithm<br />
* Algorithm techniques - basic understanding of ''at least one'' greedy, divide and conquer, brute force, and dynamic programming algorithm.<br />
* Asymptotic resource usage - basic understanding, can use Jeff's rules of thumb in simplifying expressions<br />
<br />
'''B - satisfactory'''<br />
* In addition to the above...<br />
* Data structures programming - can write the code for methods for ''most'' of the "C grade" basic data structures<br />
* Data structures programming - can use ''most'' of the "C grade" basic data structures to solve problems<br />
* Data structures basic understanding - skip list, red black trees, heap, B tree<br />
* Sorting algorithms - can write the code for at least one slow and at least one efficient sorting algorithm<br />
* Sorting algorithms - basic understanding of multiple slow and multiple efficient sorting algorithms<br />
* Graph algorithms - basic understanding of the adjacency lists, adjacency matrices, graph algorithms DFS and BFS<br />
* 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<br />
<br />
'''A - good/excellent'''<br />
* In addition to the above...<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* Graph algorithms - can write the code for some of the "B level" graph algorithms<br />
* Graph algorithms - basic understanding of an MST algorithm and shortest path algorithm<br />
* Asymptotic resource usage - can apply the master theorem ''and'' recursion tree methods to recursive resource formulae<br />
* Integer algorithms - basic understanding of faster-than-obvious multiplication and exponentiation algorithms<br />
* Algorithm techniques - can write code for at least one algorithm for each of the "C level" algorithm techniques<br />
* Algorithm techniques - basic understanding of ''multiple'' algorithms for each of the "C level" algorithm techniques<br />
* Complexity theory - basic understanding of the definitions of L, P, NP, PSPACE, EXP and a few canonical problems in each<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.'''<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_500&diff=3734CS 5002023-01-30T14:06:45Z<p>Jkinne: /* Assignments */</p>
<hr />
<div>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. <br />
<br />
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.<br />
<br />
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).<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_500<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TR 9am-noon, MWF 2-3pm<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' MWF 11-11:50am in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Friday, May 5 10-11:50am <br> <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. <br />
<br />
'''Prerequisites''' - admission to the CS MS program or approval of instructor, should be a competent programmer in some programming language.<br />
<br />
'''CRN numbers''' - 11401 for the 001 face to face section, 12108 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use the following free online sources.<br />
* 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<br />
* 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<br />
* 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<br />
* Additional sources - as needed.<br />
<br />
'''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>.<br />
<br />
'''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<br />
[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]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
<br />
* '''q4''' - will be over Linux terminal commands and using the terminal.<br />
* '''h8_C''' - will be either chess game started in class, or another bunch of small C programs.<br />
* '''h7_C''' - will be either chess game started in class, or another bunch of small C programs.<br />
* '''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.<br />
* '''q3 - [https://indstate.instructure.com/courses/12565/quizzes/231870 C Errors]''' - that is a link to a practice quiz. In class on Jan 23.<br />
* '''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.<br />
* '''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.<br />
* '''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<br />
* '''h4 - [[Text Editors]] Terminal'''. Due Jan 13/18.<br />
* '''h3 - [[Hello Unix Lab]]'''. Due Jan 13/18.<br />
* '''h2 - [[CS Server - Terminal]]'''. Due Jan 13/18.<br />
* '''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.<br />
<br />
==Announcements==<br />
* Feb 1 - retakes on q1, q2, q3.<br />
* Jan 30 - questions on h6. introducing - chess game (will be a hw assignment).<br />
* Jan 27 - Finish loop_stdin.c, and continue on. Introducing assignment h6_C.<br />
* Jan 23 - quizzes q1, q2, q3.<br />
* Jan 20 - see the terminal stuff linked from [[Linux and CS Systems - Getting Started]]<br />
* Jan 20 - continuing with C examples, note that the quizzes q1-q3 will be Monday.<br />
* 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, ...).<br />
* Jan 13 - Introducing h5. Quizzes q1, q2, q3 in one week. Reading assignment - Essential C (all of it). See also - [[C Basics]]<br />
* 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.<br />
* Jan 11 - first day of class, syllabus, etc.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
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.<br />
<br />
'''Course Outline'''<br />
* Getting started - system setup, git, linux, bash, make, apache, math background, development on your personal computer.<br />
* C programming basics - operators, reserved words, data types, base systems, overflow.<br />
* C programming strings - manipulation of C strings.<br />
* C programming memory management - different types of memory in C, how to use them, pros and cons.<br />
* C programming style - good programming style for reliability, readability, extensibility, security.<br />
* 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.<br />
* 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.<br />
* Vocab - additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''Learning Outcomes'''<br />
* System setup - personal computer setup for both remote (connecting to CS server with terminal, sftp, X windows) and local development (editor, compiler).<br />
* Git - basic use of git for source code management.<br />
* Linux - proficient using the Linux terminal for development.<br />
* Bash - basic use of bash scripts for testing code.<br />
* Make - basic use of GNU make for compiling code.<br />
* Apache - able to post content to your CS accounts to be viewable over the web.<br />
* Math background - proficient in math background needed for data structures and algorithms.<br />
* Personal computer - is setup for development so you can do coursework from your home computer as well.<br />
* C programming - understanding of all language features, proficient in writing code using the most common, write code using good programming style.<br />
* Data structures - understanding of operations, efficiency, use cases, can write code in C for data structure operations.<br />
* Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the right algorithms to solve problems efficiently.<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''C - lowest passing grade in a grad course''' <br />
* Pass or higher achievement for ''all'' of the following<br />
* System setup, git, linux, bash, make, apache, math background, personal computer<br />
* C programming basics<br />
* Data structures basic understanding - arrays (stack and queue), linked lists (stack and queue), binary search trees, hash tables<br />
* Data structures programming - can write the code for methods for ''some'' of the above<br />
* Data structures programming - can use ''some'' of the above data structures to solve problems<br />
* Sorting algorithms - basic understanding of at least one slow and at least one efficient sorting algorithm<br />
* Sorting algorithms - can write the code for at least one sorting algorithm<br />
* Algorithm techniques - basic understanding of ''at least one'' greedy, divide and conquer, brute force, and dynamic programming algorithm.<br />
* Asymptotic resource usage - basic understanding, can use Jeff's rules of thumb in simplifying expressions<br />
<br />
'''B - satisfactory'''<br />
* In addition to the above...<br />
* Data structures programming - can write the code for methods for ''most'' of the "C grade" basic data structures<br />
* Data structures programming - can use ''most'' of the "C grade" basic data structures to solve problems<br />
* Data structures basic understanding - skip list, red black trees, heap, B tree<br />
* Sorting algorithms - can write the code for at least one slow and at least one efficient sorting algorithm<br />
* Sorting algorithms - basic understanding of multiple slow and multiple efficient sorting algorithms<br />
* Graph algorithms - basic understanding of the adjacency lists, adjacency matrices, graph algorithms DFS and BFS<br />
* 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<br />
<br />
'''A - good/excellent'''<br />
* In addition to the above...<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* Graph algorithms - can write the code for some of the "B level" graph algorithms<br />
* Graph algorithms - basic understanding of an MST algorithm and shortest path algorithm<br />
* Asymptotic resource usage - can apply the master theorem ''and'' recursion tree methods to recursive resource formulae<br />
* Integer algorithms - basic understanding of faster-than-obvious multiplication and exponentiation algorithms<br />
* Algorithm techniques - can write code for at least one algorithm for each of the "C level" algorithm techniques<br />
* Algorithm techniques - basic understanding of ''multiple'' algorithms for each of the "C level" algorithm techniques<br />
* Complexity theory - basic understanding of the definitions of L, P, NP, PSPACE, EXP and a few canonical problems in each<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.'''<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_500&diff=3733CS 5002023-01-30T14:05:20Z<p>Jkinne: /* Announcements */</p>
<hr />
<div>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. <br />
<br />
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.<br />
<br />
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).<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_500<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TR 9am-noon, MWF 2-3pm<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' MWF 11-11:50am in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Friday, May 5 10-11:50am <br> <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. <br />
<br />
'''Prerequisites''' - admission to the CS MS program or approval of instructor, should be a competent programmer in some programming language.<br />
<br />
'''CRN numbers''' - 11401 for the 001 face to face section, 12108 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use the following free online sources.<br />
* 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<br />
* 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<br />
* 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<br />
* Additional sources - as needed.<br />
<br />
'''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>.<br />
<br />
'''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<br />
[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]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
<br />
* '''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.<br />
* '''q3 - [https://indstate.instructure.com/courses/12565/quizzes/231870 C Errors]''' - that is a link to a practice quiz. In class on Jan 23.<br />
* '''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.<br />
* '''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.<br />
* '''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<br />
* '''h4 - [[Text Editors]] Terminal'''. Due Jan 13/18.<br />
* '''h3 - [[Hello Unix Lab]]'''. Due Jan 13/18.<br />
* '''h2 - [[CS Server - Terminal]]'''. Due Jan 13/18.<br />
* '''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.<br />
<br />
==Announcements==<br />
* Feb 1 - retakes on q1, q2, q3.<br />
* Jan 30 - questions on h6. introducing - chess game (will be a hw assignment).<br />
* Jan 27 - Finish loop_stdin.c, and continue on. Introducing assignment h6_C.<br />
* Jan 23 - quizzes q1, q2, q3.<br />
* Jan 20 - see the terminal stuff linked from [[Linux and CS Systems - Getting Started]]<br />
* Jan 20 - continuing with C examples, note that the quizzes q1-q3 will be Monday.<br />
* 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, ...).<br />
* Jan 13 - Introducing h5. Quizzes q1, q2, q3 in one week. Reading assignment - Essential C (all of it). See also - [[C Basics]]<br />
* 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.<br />
* Jan 11 - first day of class, syllabus, etc.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
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.<br />
<br />
'''Course Outline'''<br />
* Getting started - system setup, git, linux, bash, make, apache, math background, development on your personal computer.<br />
* C programming basics - operators, reserved words, data types, base systems, overflow.<br />
* C programming strings - manipulation of C strings.<br />
* C programming memory management - different types of memory in C, how to use them, pros and cons.<br />
* C programming style - good programming style for reliability, readability, extensibility, security.<br />
* 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.<br />
* 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.<br />
* Vocab - additional terms, algorithms, concepts at a shallow level.<br />
<br />
'''Learning Outcomes'''<br />
* System setup - personal computer setup for both remote (connecting to CS server with terminal, sftp, X windows) and local development (editor, compiler).<br />
* Git - basic use of git for source code management.<br />
* Linux - proficient using the Linux terminal for development.<br />
* Bash - basic use of bash scripts for testing code.<br />
* Make - basic use of GNU make for compiling code.<br />
* Apache - able to post content to your CS accounts to be viewable over the web.<br />
* Math background - proficient in math background needed for data structures and algorithms.<br />
* Personal computer - is setup for development so you can do coursework from your home computer as well.<br />
* C programming - understanding of all language features, proficient in writing code using the most common, write code using good programming style.<br />
* Data structures - understanding of operations, efficiency, use cases, can write code in C for data structure operations.<br />
* Algorithms - understanding of basic algorithms, arguments for correctness and efficiency, can use the right algorithms to solve problems efficiently.<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''C - lowest passing grade in a grad course''' <br />
* Pass or higher achievement for ''all'' of the following<br />
* System setup, git, linux, bash, make, apache, math background, personal computer<br />
* C programming basics<br />
* Data structures basic understanding - arrays (stack and queue), linked lists (stack and queue), binary search trees, hash tables<br />
* Data structures programming - can write the code for methods for ''some'' of the above<br />
* Data structures programming - can use ''some'' of the above data structures to solve problems<br />
* Sorting algorithms - basic understanding of at least one slow and at least one efficient sorting algorithm<br />
* Sorting algorithms - can write the code for at least one sorting algorithm<br />
* Algorithm techniques - basic understanding of ''at least one'' greedy, divide and conquer, brute force, and dynamic programming algorithm.<br />
* Asymptotic resource usage - basic understanding, can use Jeff's rules of thumb in simplifying expressions<br />
<br />
'''B - satisfactory'''<br />
* In addition to the above...<br />
* Data structures programming - can write the code for methods for ''most'' of the "C grade" basic data structures<br />
* Data structures programming - can use ''most'' of the "C grade" basic data structures to solve problems<br />
* Data structures basic understanding - skip list, red black trees, heap, B tree<br />
* Sorting algorithms - can write the code for at least one slow and at least one efficient sorting algorithm<br />
* Sorting algorithms - basic understanding of multiple slow and multiple efficient sorting algorithms<br />
* Graph algorithms - basic understanding of the adjacency lists, adjacency matrices, graph algorithms DFS and BFS<br />
* 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<br />
<br />
'''A - good/excellent'''<br />
* In addition to the above...<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* Graph algorithms - can write the code for some of the "B level" graph algorithms<br />
* Graph algorithms - basic understanding of an MST algorithm and shortest path algorithm<br />
* Asymptotic resource usage - can apply the master theorem ''and'' recursion tree methods to recursive resource formulae<br />
* Integer algorithms - basic understanding of faster-than-obvious multiplication and exponentiation algorithms<br />
* Algorithm techniques - can write code for at least one algorithm for each of the "C level" algorithm techniques<br />
* Algorithm techniques - basic understanding of ''multiple'' algorithms for each of the "C level" algorithm techniques<br />
* Complexity theory - basic understanding of the definitions of L, P, NP, PSPACE, EXP and a few canonical problems in each<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.'''<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_303&diff=3732CS 3032023-01-27T17:02:01Z<p>Jkinne: /* Announcements */</p>
<hr />
<div>CS 303 Discrete Structures and Computing Theory is taken by CS majors after CS 151. <br />
<br />
This page contains the syllabus for CS 303 and is used to keep track of assignments, etc. as well for the most recent offering (spring 2023). For announcements, click the link in the table of contents.<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_303<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TBD<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' WF 10-10:50am, 1-1:50pm in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Monday, May 1, 10-11:50am and/or Wednesday, May 3 1-2:50pm <br> <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. <br />
<br />
'''Prerequisites''' - C or higher in CS 151.<br />
<br />
'''CRN numbers''' - 11380 for the 001 face to face section, 12450 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use selections from the following free online sources.<br />
* '''Primary text for the beginning of the course''' - '''[https://mfleck.cs.illinois.edu/building-blocks/index-sp2020.html Building Blocks for Theoretical Computer Science]''' by Margaret M. Fleck<br />
* [https://courses.csail.mit.edu/6.042/spring18/mcs.pdf Mathematics for Computer Science] by Eric Lehman, F Thomson Leighton, and Albert R Meyer<br />
* [https://cglab.ca/~michiel/TheoryOfComputation/TheoryOfComputation.pdf Introduction to Theory of Computation] by Anil Maheshwari and Michiel Smid<br />
* Additional sources - as needed<br />
** [https://en.wikipedia.org/wiki/Boolean_satisfiability_problem#3-satisfiability 3SAT NP-complete problem], [https://www.geeksforgeeks.org/proof-that-clique-decision-problem-is-np-complete/ Clique NP-complete problem], [https://cgi.csc.liv.ac.uk/~igor/COMP309/3CP.pdf 3 Coloring NP-complete problem]<br />
<br />
'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/Ei0RjIshxhlLmcwB-qhatPUBGDXtwXxc4O_-nVKPHoKrOw?e=yQKG51 CS 303 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.<br />
<br />
'''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 [https://teams.microsoft.com/l/team/19%3aFIaIH4p7m6BB3-VsZg5fx7SylggKoMt0rO7WHWqJbFk1%40thread.tacv2/conversations?groupId=6de93cd8-5594-4520-b014-7db43a7e9b4d&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 303 MS teams direct link]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
* '''h1 - [[Truth table proofs]]''' - both assignments 1 and 2 listed there. For which logical identity and which logical fallacy you need to do, see the lecture from Jan 27 when this was shared on screen. Due Feb 3.<br />
* '''q4 - [https://indstate.instructure.com/courses/12565/quizzes/231878 Logic]''' - that is the practice quiz. Jan 27, 1:25pm.<br />
* '''q3 - [https://indstate.instructure.com/courses/12565/quizzes/231882 Miscellaneous Math]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 25.94444444, 92.50529101. Time to take the quiz stats: max, median, min, average = 13, 5, 2, 6.142857143.<br />
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231879 Math and Bases]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 66.66666667, 97.10144928. Time to take the quiz stats: max, median, min, average = 13, 5, 3, 6.173913043.<br />
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231880/take Math Notation]''' - that link is a practice quiz, the real one will be in our course in Canvas. See also [[Math for CS Review]] for a study guide of sorts. Open book, open internet, not "open other person". Jan 13 around 1:25pm (quiz will be 1:25-1:50pm). Score stats: max, median, min, average = 100, 100, 87.75510204, 98.4028394. Time to take the quiz stats: max, median, min, average = 22, 7, 5, 9.52173913.<br />
<br />
==Announcements==<br />
* Jan 27 - Continuing with proofs in OneNote and BB. Introducing assignment h1. Taking the q4 logic quiz in the afternoon. Starting number theory (BB chapter 4).<br />
* Jan 20 - request to move the standard quiz day to be Wednesday. Nope, stick with Fridays.<br />
* Jan 20 - guest speaker for today, faculty candidate visiting today.<br />
* Jan 18 - reading assignment - Building Blocks chapters 3, 4.<br />
* Jan 18 - today's topic - Logic. See practice quiz above.<br />
* Jan 13 - q1 set so you can see your answers and the correct answers, and stats on the scores and total time taken are above. <br />
* Jan 13 - reading assignment - Building Blocks chapter 2.<br />
* Jan 13 - math notation, the graph questions. q1 math notation quiz. Continuing through math background, including material for q2 and q3 - see links above.<br />
* Jan 11 - note that q1 will be Friday, see above. In general for quizzes, no makeups, but you'll have a chance on the midterm to take it again.<br />
* Jan 11 - reading assignment - Building Blocks chapter 1. First quizzes - Friday 1-2pm.<br />
* Jan 11 - first day of class, syllabus and such. It is good for you to take notes.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
The catalog description for this course is: "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." The two main goals are (a) being able to reason about computation (mathematical objects and algorithms), (b) familiarity with the topics listed in the description which are important in later courses.<br />
<br />
'''Course Outline'''<br />
* We will start the course by following along in the order of ''Building Blocks for Theoretical Computer Science'', see link above.<br />
<br />
'''Learning Outcomes'''<br />
* Basic math - ability to use basic algebra, properties of numbers, rules of exponents and logarithms<br />
* Proofs - understanding of what a proof is, ability to use the following methods of proof as needed - direct proof / by construction, by contradiction, by induction, by decomposition<br />
* Logic - ability to use the rules of logic (truth tables, DeMorgan's laws, etc.) in arguments<br />
* Integers - can use the properties of the integers to write algorithms and reason about their correctness<br />
* Sets, relations, functions - can apply the definitions of these concepts in proofs<br />
* Graphs, trees - understanding of standard definitions related to graphs and trees, able to argue basic properties<br />
* Asymptotic resource analysis (big-O) - can apply the definitions of big-O notation to compare different running time formulae, to simplify expressions, and to determine the big-O running time of algorithms<br />
* Complexity theory - understanding of definitions of basic complexity classes (L, P, NP, PSPACE, EXP), understanding of canonical problems in each class, can reason about these complexity classes<br />
* Notions of infinity - understanding of difference between countably and uncountably infinite, can use these in proofs<br />
* Probability - knowledge of basic definitions and properties of discrete probability, can apply to the analysis of randomized algorithms and processes<br />
* Regular languages - understanding of DFAs, NFAs, regular expressions and ability to produce models for commonly encountered languages<br />
* General models of computation - understanding of Turing-complete models of computation (Turing machine, circuits, programming languages) and implications<br />
* Computability - can give arguments whether a given problem is computable or not (e.g., the halting problem)<br />
* Notation - proper use of math notation (sets, logic, functions, summations, proofs, etc.)<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''D'''<br />
* Pass- or higher achievement for ''all'' of the following<br />
* Hello unix lab (at least 2/2)<br />
* Math notation (at least 80%)<br />
* Math bases (at least 80%)<br />
* Truth table proof (at least 1.5/2)<br />
* Proof that a number is irrational (at least 1.5/2)<br />
* Euclidean algorithm - demo of running the algorithm (at least 1.5/2)<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''C''' <br />
* Pass or higher achievement for ''all'' of the above (at least 90% on quizzes, at least 2/2 on assignment problems)<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''B'''<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''A'''<br />
* In addition to the above...<br />
* At least 1 puzzle/challenge problem solved correctly (pass rating)<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=Truth_table_proofs&diff=3731Truth table proofs2023-01-27T15:13:02Z<p>Jkinne: /* Assignment 1 */</p>
<hr />
<div>Truth tables are used to show all possible values that a given logical expression might take. <br />
<br />
=Examples=<br />
==Definition of AND==<br />
The following gives the definition of the logical AND operation.<br />
<br />
{| class="wikitable" <br />
|-<br />
! A !! B !! A &and; B<br />
|-<br />
| false || false || false<br />
|-<br />
| false || true || false<br />
|-<br />
| true || false || false<br />
|-<br />
| true || true || true<br />
|}<br />
<br />
==Proof of one of De Morgan's laws==<br />
A truth table can also be used to prove a logical identity. The following proves De Morgan's law that &not; (A &and; B) is equivalent to (&not; A) &or; (&not; B). Notice that the truth values for these (the last two columns in the table) are always the same.<br />
<br />
{| class="wikitable"<br />
|- <br />
! A !! B !! A &and; B !! &not; (A &and; B) !! (&not; A) &or; (&not; B)<br />
|-<br />
| false || false || false || true || true<br />
|-<br />
| false || true || false || true || true<br />
|-<br />
| true || false || false || true || true<br />
|-<br />
| true || true || true || false || false<br />
|}<br />
<br />
==Disproof of a logical fallacy==<br />
Truth tables can also be used to disprove a logical fallacy. For example, [https://en.wikipedia.org/wiki/Affirming_the_consequent one fallacy] is to assume the converse of an implication holds. If you know that (A &rarr; B) is true, and you know that B is true, the fallacy would be to then conclude that A must also be true. Note that the statement - "if an animal is a mammal then it is also a vertebrate" - is true. If we have an animal that is a vertebrate (for example, a dog), it would be a fallacy to now conclude that the animal must also be a mammal.<br />
<br />
We will show that this is a logical fallacy - regardless of the statements A and B, just because we know A &rarr; B is true, we should not in general assume the converse is also true. First we remind you that (A &rarr; B) is equivalent to &not; A &or; B. What we want to look at is the claim: ((A &rarr; B) &and; B) &rarr; A. If this expression is always true, then we could rely on the converse to always be used. Let us first simplify the expression. It is equivalent to ((&not; A &or; B) &and; B) &rarr; A. This is equivalent to &not; ((&not; A &or; B) &and; B) &or; A. We can keep this formula in mind as we evaluate it's truth value for each possible value of A and B.<br />
<br />
Consider this truth table.<br />
{| class="wikitable"<br />
|- <br />
! A !! B !! A &rarr; B !! ((A &rarr; B) &and; B) &rarr; A <br />
|-<br />
| false || false || true || true<br />
|-<br />
| false || true || true || false<br />
|-<br />
| true || false || false || true<br />
|- <br />
| true || true || true || true<br />
|}<br />
In the second row, we see that the last column is false. This is where we should expect to see a problem - the place where B is true, but we should not be able to conclude that A must also be true. We have shown that we cannot always apply the converse.<br />
<br />
=Assignment 1=<br />
You will be assigned a [https://www.cs.odu.edu/~toida/nerzic/content/logic/prop_logic/identities/identities.html logical identity] to prove and a [https://en.wikipedia.org/wiki/Formal_fallacy logical fallacy] to disprove. For each, you are permitted and encouraged to simplify the expressions to make it easier to evaluate the expressions. You then write a truth table for each part - proving the logical identity, and disproving the logical fallacy. Include a similar amount of explanation as above.<br />
<br />
Unless otherwise indicated by your instructor, you can submit your solutions in whatever format you like - word document, pictures of it worked out on paper, physical paper, OneNote notebook link. If you send a link to an electronic document, make sure it is set so it is shared with your instructor.<br />
<br />
'''Pass rating check''' Each part must be correct to earn a 1/1 on that part. The total for the problems would be 2 points.<br />
<br />
=Assignment 2=<br />
The following are additional problems related to truth tables and logic. Some are from [https://courses.csail.mit.edu/6.042/spring18/mcs.pdf Mathematics for Computer Science] (which we abbreviate MCS).<br />
<br />
# MCS Problem 3.5. This gives you more practice examining proofs for mistakes. If you have a program that produces truth tables, you may use it for this problem for part (a). <br />
# MCS Problem 3.8. This gives you some practice working with logical formulae and reasoning about them rather than just using truth tables for proofs (since the truth table for this problem would be unwieldy).<br />
# MCS Problem 3.11. This gives you practice examining logical formulae to look for examples / counter-examples of truth assignments. Note that a logical expression is ''valid'' if it is always true. For each response for this question, you should give a reason why the answer you give is correct; you don't need it to be a formal proof.<br />
# Ungraded - Show how you can use a NOR gate to construct AND, OR, NOT, XOR gates. For each you need to give the expression using just NOR gates, and you need to give a justification for why this works. Your justification could be a truth table or just reasoning about the expressions. It does not need to be a formal proof, but does need to convince the reader that your claims are true. Note - you may use the values ''true'' and ''false'' in your constructions. ''If you do a construction for NOT, you can use that in the later parts, without fully expanding it.''<br />
<br />
'''Pass rating check''' You should be able to get 90% of the individual parts completely correct, and should correctly identify any parts that you are not sure your answer is correct.<br />
<br />
'''Grading notes''' Notes on things people have missed on these problems...<br />
* MCS Problem 3.5<br />
** For part a, you need to give the truth tables asked for (* and ** from the problem) and indicate where they are different.<br />
** For part b, you need to identify where specifically Sam's argument is wrong. It is not enough to argue that his conclusion is wrong.<br />
* MCS Problem 3.8<br />
** You need to explain why the variables are forced to their values, in both of your cases. Many people gave a reasonable argument only for one of the cases.<br />
** Many people did not explain why the variables are forced in either case. Just giving the 2 truth assignments is not enough.<br />
* MCS Problem 3.11<br />
** You need to give some reason for why you give the answer you give. Some did not explain why the valid one(s) is(are) valid.<br />
* NOR gate constructions<br />
** If you found the solution online (e.g., on wikipedia) then you should put a comment in canvas to give a link to what you used. If you did use something and don't cite it, that is plagiarism, that will waste all of our time, and your grade will be impacted (maybe worse).</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_303&diff=3730CS 3032023-01-27T14:19:39Z<p>Jkinne: /* Announcements */</p>
<hr />
<div>CS 303 Discrete Structures and Computing Theory is taken by CS majors after CS 151. <br />
<br />
This page contains the syllabus for CS 303 and is used to keep track of assignments, etc. as well for the most recent offering (spring 2023). For announcements, click the link in the table of contents.<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_303<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TBD<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' WF 10-10:50am, 1-1:50pm in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Monday, May 1, 10-11:50am and/or Wednesday, May 3 1-2:50pm <br> <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. <br />
<br />
'''Prerequisites''' - C or higher in CS 151.<br />
<br />
'''CRN numbers''' - 11380 for the 001 face to face section, 12450 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use selections from the following free online sources.<br />
* '''Primary text for the beginning of the course''' - '''[https://mfleck.cs.illinois.edu/building-blocks/index-sp2020.html Building Blocks for Theoretical Computer Science]''' by Margaret M. Fleck<br />
* [https://courses.csail.mit.edu/6.042/spring18/mcs.pdf Mathematics for Computer Science] by Eric Lehman, F Thomson Leighton, and Albert R Meyer<br />
* [https://cglab.ca/~michiel/TheoryOfComputation/TheoryOfComputation.pdf Introduction to Theory of Computation] by Anil Maheshwari and Michiel Smid<br />
* Additional sources - as needed<br />
** [https://en.wikipedia.org/wiki/Boolean_satisfiability_problem#3-satisfiability 3SAT NP-complete problem], [https://www.geeksforgeeks.org/proof-that-clique-decision-problem-is-np-complete/ Clique NP-complete problem], [https://cgi.csc.liv.ac.uk/~igor/COMP309/3CP.pdf 3 Coloring NP-complete problem]<br />
<br />
'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/Ei0RjIshxhlLmcwB-qhatPUBGDXtwXxc4O_-nVKPHoKrOw?e=yQKG51 CS 303 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.<br />
<br />
'''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 [https://teams.microsoft.com/l/team/19%3aFIaIH4p7m6BB3-VsZg5fx7SylggKoMt0rO7WHWqJbFk1%40thread.tacv2/conversations?groupId=6de93cd8-5594-4520-b014-7db43a7e9b4d&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 303 MS teams direct link]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
* '''h1 - [[Truth table proofs]]''' - both assignments 1 and 2 listed there. For which logical identity and which logical fallacy you need to do, see the lecture from Jan 27 when this was shared on screen. Due Feb 3.<br />
* '''q4 - [https://indstate.instructure.com/courses/12565/quizzes/231878 Logic]''' - that is the practice quiz. Jan 27, 1:25pm.<br />
* '''q3 - [https://indstate.instructure.com/courses/12565/quizzes/231882 Miscellaneous Math]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 25.94444444, 92.50529101. Time to take the quiz stats: max, median, min, average = 13, 5, 2, 6.142857143.<br />
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231879 Math and Bases]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 66.66666667, 97.10144928. Time to take the quiz stats: max, median, min, average = 13, 5, 3, 6.173913043.<br />
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231880/take Math Notation]''' - that link is a practice quiz, the real one will be in our course in Canvas. See also [[Math for CS Review]] for a study guide of sorts. Open book, open internet, not "open other person". Jan 13 around 1:25pm (quiz will be 1:25-1:50pm). Score stats: max, median, min, average = 100, 100, 87.75510204, 98.4028394. Time to take the quiz stats: max, median, min, average = 22, 7, 5, 9.52173913.<br />
<br />
==Announcements==<br />
* Jan 27 - Continuing with proofs in OneNote and BB. Introducing assignment h1. Taking the q4 logic quiz in the afternoon.<br />
* Jan 20 - request to move the standard quiz day to be Wednesday. Nope, stick with Fridays.<br />
* Jan 20 - guest speaker for today, faculty candidate visiting today.<br />
* Jan 18 - reading assignment - Building Blocks chapters 3, 4.<br />
* Jan 18 - today's topic - Logic. See practice quiz above.<br />
* Jan 13 - q1 set so you can see your answers and the correct answers, and stats on the scores and total time taken are above. <br />
* Jan 13 - reading assignment - Building Blocks chapter 2.<br />
* Jan 13 - math notation, the graph questions. q1 math notation quiz. Continuing through math background, including material for q2 and q3 - see links above.<br />
* Jan 11 - note that q1 will be Friday, see above. In general for quizzes, no makeups, but you'll have a chance on the midterm to take it again.<br />
* Jan 11 - reading assignment - Building Blocks chapter 1. First quizzes - Friday 1-2pm.<br />
* Jan 11 - first day of class, syllabus and such. It is good for you to take notes.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
The catalog description for this course is: "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." The two main goals are (a) being able to reason about computation (mathematical objects and algorithms), (b) familiarity with the topics listed in the description which are important in later courses.<br />
<br />
'''Course Outline'''<br />
* We will start the course by following along in the order of ''Building Blocks for Theoretical Computer Science'', see link above.<br />
<br />
'''Learning Outcomes'''<br />
* Basic math - ability to use basic algebra, properties of numbers, rules of exponents and logarithms<br />
* Proofs - understanding of what a proof is, ability to use the following methods of proof as needed - direct proof / by construction, by contradiction, by induction, by decomposition<br />
* Logic - ability to use the rules of logic (truth tables, DeMorgan's laws, etc.) in arguments<br />
* Integers - can use the properties of the integers to write algorithms and reason about their correctness<br />
* Sets, relations, functions - can apply the definitions of these concepts in proofs<br />
* Graphs, trees - understanding of standard definitions related to graphs and trees, able to argue basic properties<br />
* Asymptotic resource analysis (big-O) - can apply the definitions of big-O notation to compare different running time formulae, to simplify expressions, and to determine the big-O running time of algorithms<br />
* Complexity theory - understanding of definitions of basic complexity classes (L, P, NP, PSPACE, EXP), understanding of canonical problems in each class, can reason about these complexity classes<br />
* Notions of infinity - understanding of difference between countably and uncountably infinite, can use these in proofs<br />
* Probability - knowledge of basic definitions and properties of discrete probability, can apply to the analysis of randomized algorithms and processes<br />
* Regular languages - understanding of DFAs, NFAs, regular expressions and ability to produce models for commonly encountered languages<br />
* General models of computation - understanding of Turing-complete models of computation (Turing machine, circuits, programming languages) and implications<br />
* Computability - can give arguments whether a given problem is computable or not (e.g., the halting problem)<br />
* Notation - proper use of math notation (sets, logic, functions, summations, proofs, etc.)<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''D'''<br />
* Pass- or higher achievement for ''all'' of the following<br />
* Hello unix lab (at least 2/2)<br />
* Math notation (at least 80%)<br />
* Math bases (at least 80%)<br />
* Truth table proof (at least 1.5/2)<br />
* Proof that a number is irrational (at least 1.5/2)<br />
* Euclidean algorithm - demo of running the algorithm (at least 1.5/2)<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''C''' <br />
* Pass or higher achievement for ''all'' of the above (at least 90% on quizzes, at least 2/2 on assignment problems)<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''B'''<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''A'''<br />
* In addition to the above...<br />
* At least 1 puzzle/challenge problem solved correctly (pass rating)<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_303&diff=3729CS 3032023-01-27T14:19:20Z<p>Jkinne: /* Announcements */</p>
<hr />
<div>CS 303 Discrete Structures and Computing Theory is taken by CS majors after CS 151. <br />
<br />
This page contains the syllabus for CS 303 and is used to keep track of assignments, etc. as well for the most recent offering (spring 2023). For announcements, click the link in the table of contents.<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_303<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TBD<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' WF 10-10:50am, 1-1:50pm in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Monday, May 1, 10-11:50am and/or Wednesday, May 3 1-2:50pm <br> <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. <br />
<br />
'''Prerequisites''' - C or higher in CS 151.<br />
<br />
'''CRN numbers''' - 11380 for the 001 face to face section, 12450 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use selections from the following free online sources.<br />
* '''Primary text for the beginning of the course''' - '''[https://mfleck.cs.illinois.edu/building-blocks/index-sp2020.html Building Blocks for Theoretical Computer Science]''' by Margaret M. Fleck<br />
* [https://courses.csail.mit.edu/6.042/spring18/mcs.pdf Mathematics for Computer Science] by Eric Lehman, F Thomson Leighton, and Albert R Meyer<br />
* [https://cglab.ca/~michiel/TheoryOfComputation/TheoryOfComputation.pdf Introduction to Theory of Computation] by Anil Maheshwari and Michiel Smid<br />
* Additional sources - as needed<br />
** [https://en.wikipedia.org/wiki/Boolean_satisfiability_problem#3-satisfiability 3SAT NP-complete problem], [https://www.geeksforgeeks.org/proof-that-clique-decision-problem-is-np-complete/ Clique NP-complete problem], [https://cgi.csc.liv.ac.uk/~igor/COMP309/3CP.pdf 3 Coloring NP-complete problem]<br />
<br />
'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/Ei0RjIshxhlLmcwB-qhatPUBGDXtwXxc4O_-nVKPHoKrOw?e=yQKG51 CS 303 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.<br />
<br />
'''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 [https://teams.microsoft.com/l/team/19%3aFIaIH4p7m6BB3-VsZg5fx7SylggKoMt0rO7WHWqJbFk1%40thread.tacv2/conversations?groupId=6de93cd8-5594-4520-b014-7db43a7e9b4d&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 303 MS teams direct link]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
* '''h1 - [[Truth table proofs]]''' - both assignments 1 and 2 listed there. For which logical identity and which logical fallacy you need to do, see the lecture from Jan 27 when this was shared on screen. Due Feb 3.<br />
* '''q4 - [https://indstate.instructure.com/courses/12565/quizzes/231878 Logic]''' - that is the practice quiz. Jan 27, 1:25pm.<br />
* '''q3 - [https://indstate.instructure.com/courses/12565/quizzes/231882 Miscellaneous Math]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 25.94444444, 92.50529101. Time to take the quiz stats: max, median, min, average = 13, 5, 2, 6.142857143.<br />
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231879 Math and Bases]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 66.66666667, 97.10144928. Time to take the quiz stats: max, median, min, average = 13, 5, 3, 6.173913043.<br />
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231880/take Math Notation]''' - that link is a practice quiz, the real one will be in our course in Canvas. See also [[Math for CS Review]] for a study guide of sorts. Open book, open internet, not "open other person". Jan 13 around 1:25pm (quiz will be 1:25-1:50pm). Score stats: max, median, min, average = 100, 100, 87.75510204, 98.4028394. Time to take the quiz stats: max, median, min, average = 22, 7, 5, 9.52173913.<br />
<br />
==Announcements==<br />
* Jan 27 - Continuing with proofs in OneNote and BB. Introducing assignment h1. Taking the latest quiz.<br />
* Jan 20 - request to move the standard quiz day to be Wednesday. Nope, stick with Fridays.<br />
* Jan 20 - guest speaker for today, faculty candidate visiting today.<br />
* Jan 18 - reading assignment - Building Blocks chapters 3, 4.<br />
* Jan 18 - today's topic - Logic. See practice quiz above.<br />
* Jan 13 - q1 set so you can see your answers and the correct answers, and stats on the scores and total time taken are above. <br />
* Jan 13 - reading assignment - Building Blocks chapter 2.<br />
* Jan 13 - math notation, the graph questions. q1 math notation quiz. Continuing through math background, including material for q2 and q3 - see links above.<br />
* Jan 11 - note that q1 will be Friday, see above. In general for quizzes, no makeups, but you'll have a chance on the midterm to take it again.<br />
* Jan 11 - reading assignment - Building Blocks chapter 1. First quizzes - Friday 1-2pm.<br />
* Jan 11 - first day of class, syllabus and such. It is good for you to take notes.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
The catalog description for this course is: "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." The two main goals are (a) being able to reason about computation (mathematical objects and algorithms), (b) familiarity with the topics listed in the description which are important in later courses.<br />
<br />
'''Course Outline'''<br />
* We will start the course by following along in the order of ''Building Blocks for Theoretical Computer Science'', see link above.<br />
<br />
'''Learning Outcomes'''<br />
* Basic math - ability to use basic algebra, properties of numbers, rules of exponents and logarithms<br />
* Proofs - understanding of what a proof is, ability to use the following methods of proof as needed - direct proof / by construction, by contradiction, by induction, by decomposition<br />
* Logic - ability to use the rules of logic (truth tables, DeMorgan's laws, etc.) in arguments<br />
* Integers - can use the properties of the integers to write algorithms and reason about their correctness<br />
* Sets, relations, functions - can apply the definitions of these concepts in proofs<br />
* Graphs, trees - understanding of standard definitions related to graphs and trees, able to argue basic properties<br />
* Asymptotic resource analysis (big-O) - can apply the definitions of big-O notation to compare different running time formulae, to simplify expressions, and to determine the big-O running time of algorithms<br />
* Complexity theory - understanding of definitions of basic complexity classes (L, P, NP, PSPACE, EXP), understanding of canonical problems in each class, can reason about these complexity classes<br />
* Notions of infinity - understanding of difference between countably and uncountably infinite, can use these in proofs<br />
* Probability - knowledge of basic definitions and properties of discrete probability, can apply to the analysis of randomized algorithms and processes<br />
* Regular languages - understanding of DFAs, NFAs, regular expressions and ability to produce models for commonly encountered languages<br />
* General models of computation - understanding of Turing-complete models of computation (Turing machine, circuits, programming languages) and implications<br />
* Computability - can give arguments whether a given problem is computable or not (e.g., the halting problem)<br />
* Notation - proper use of math notation (sets, logic, functions, summations, proofs, etc.)<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''D'''<br />
* Pass- or higher achievement for ''all'' of the following<br />
* Hello unix lab (at least 2/2)<br />
* Math notation (at least 80%)<br />
* Math bases (at least 80%)<br />
* Truth table proof (at least 1.5/2)<br />
* Proof that a number is irrational (at least 1.5/2)<br />
* Euclidean algorithm - demo of running the algorithm (at least 1.5/2)<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''C''' <br />
* Pass or higher achievement for ''all'' of the above (at least 90% on quizzes, at least 2/2 on assignment problems)<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''B'''<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''A'''<br />
* In addition to the above...<br />
* At least 1 puzzle/challenge problem solved correctly (pass rating)<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=CS_303&diff=3728CS 3032023-01-27T14:18:39Z<p>Jkinne: /* Assignments */</p>
<hr />
<div>CS 303 Discrete Structures and Computing Theory is taken by CS majors after CS 151. <br />
<br />
This page contains the syllabus for CS 303 and is used to keep track of assignments, etc. as well for the most recent offering (spring 2023). For announcements, click the link in the table of contents.<br />
<br />
=General Information=<br />
'''Course website''' - https://cs.indstate.edu/wiki/index.php/CS_303<br />
<br />
'''Your Instructor'''<br />
<br />
[https://kinnejeff.com Jeff Kinne], [http://mailto:jkinne@cs.indstate.edu jkinne@cs.indstate.edu] <br><br />
''Office:'' Root Hall A-142 and in Microsoft Teams, phone 812-237-2126 <br><br />
''Instructor Office Hours:'' TBD<br />
<br />
'''Lecture, Exam'''<br />
<br />
''Lecture:'' WF 10-10:50am, 1-1:50pm in Root Hall A-019, over Zoom (link in Canvas, see below), and recorded<br> <br />
''Mid-term exam:'' TBA <br> <br />
''Final exam:'' Monday, May 1, 10-11:50am and/or Wednesday, May 3 1-2:50pm <br> <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. <br />
<br />
'''Prerequisites''' - C or higher in CS 151.<br />
<br />
'''CRN numbers''' - 11380 for the 001 face to face section, 12450 for the 301 online section<br />
<br />
'''Required text'''<br />
* We will use selections from the following free online sources.<br />
* '''Primary text for the beginning of the course''' - '''[https://mfleck.cs.illinois.edu/building-blocks/index-sp2020.html Building Blocks for Theoretical Computer Science]''' by Margaret M. Fleck<br />
* [https://courses.csail.mit.edu/6.042/spring18/mcs.pdf Mathematics for Computer Science] by Eric Lehman, F Thomson Leighton, and Albert R Meyer<br />
* [https://cglab.ca/~michiel/TheoryOfComputation/TheoryOfComputation.pdf Introduction to Theory of Computation] by Anil Maheshwari and Michiel Smid<br />
* Additional sources - as needed<br />
** [https://en.wikipedia.org/wiki/Boolean_satisfiability_problem#3-satisfiability 3SAT NP-complete problem], [https://www.geeksforgeeks.org/proof-that-clique-decision-problem-is-np-complete/ Clique NP-complete problem], [https://cgi.csc.liv.ac.uk/~igor/COMP309/3CP.pdf 3 Coloring NP-complete problem]<br />
<br />
'''Class notes''' - Notes during class will mostly be kept in the '''[https://sycamoresindstate-my.sharepoint.com/:o:/g/personal/jeffrey_kinne_indstate_edu/Ei0RjIshxhlLmcwB-qhatPUBGDXtwXxc4O_-nVKPHoKrOw?e=yQKG51 CS 303 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.<br />
<br />
'''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 [https://teams.microsoft.com/l/team/19%3aFIaIH4p7m6BB3-VsZg5fx7SylggKoMt0rO7WHWqJbFk1%40thread.tacv2/conversations?groupId=6de93cd8-5594-4520-b014-7db43a7e9b4d&tenantId=3eeabe39-6b1c-4f95-ae68-2fab18085f8d CS 303 MS teams direct link]<br />
<br />
=Announcements/Assignments/Quizzes=<br />
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.<br />
<br />
==Assignments==<br />
* '''h1 - [[Truth table proofs]]''' - both assignments 1 and 2 listed there. For which logical identity and which logical fallacy you need to do, see the lecture from Jan 27 when this was shared on screen. Due Feb 3.<br />
* '''q4 - [https://indstate.instructure.com/courses/12565/quizzes/231878 Logic]''' - that is the practice quiz. Jan 27, 1:25pm.<br />
* '''q3 - [https://indstate.instructure.com/courses/12565/quizzes/231882 Miscellaneous Math]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 25.94444444, 92.50529101. Time to take the quiz stats: max, median, min, average = 13, 5, 2, 6.142857143.<br />
* '''q2 - [https://indstate.instructure.com/courses/12565/quizzes/231879 Math and Bases]''' - that is the practice quiz, see the link in q1 for Math for CS Review. Jan 20, 1:25pm. Score stats: max, median, min, average = 100, 100, 66.66666667, 97.10144928. Time to take the quiz stats: max, median, min, average = 13, 5, 3, 6.173913043.<br />
* '''q1 - [https://indstate.instructure.com/courses/12565/quizzes/231880/take Math Notation]''' - that link is a practice quiz, the real one will be in our course in Canvas. See also [[Math for CS Review]] for a study guide of sorts. Open book, open internet, not "open other person". Jan 13 around 1:25pm (quiz will be 1:25-1:50pm). Score stats: max, median, min, average = 100, 100, 87.75510204, 98.4028394. Time to take the quiz stats: max, median, min, average = 22, 7, 5, 9.52173913.<br />
<br />
==Announcements==<br />
* Jan 23 - Continuing with proofs in OneNote and BB.<br />
* Jan 20 - request to move the standard quiz day to be Wednesday. ??<br />
* Jan 20 - guest speaker for today, faculty candidate visiting today.<br />
* Jan 18 - reading assignment - Building Blocks chapters 3, 4.<br />
* Jan 18 - today's topic - Logic. See practice quiz above.<br />
* Jan 13 - q1 set so you can see your answers and the correct answers, and stats on the scores and total time taken are above. <br />
* Jan 13 - reading assignment - Building Blocks chapter 2.<br />
* Jan 13 - math notation, the graph questions. q1 math notation quiz. Continuing through math background, including material for q2 and q3 - see links above.<br />
* Jan 11 - note that q1 will be Friday, see above. In general for quizzes, no makeups, but you'll have a chance on the midterm to take it again.<br />
* Jan 11 - reading assignment - Building Blocks chapter 1. First quizzes - Friday 1-2pm.<br />
* Jan 11 - first day of class, syllabus and such. It is good for you to take notes.<br />
<br />
=Course Description and Content=<br />
<br />
'''Course Description''' <br />
<br />
The catalog description for this course is: "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." The two main goals are (a) being able to reason about computation (mathematical objects and algorithms), (b) familiarity with the topics listed in the description which are important in later courses.<br />
<br />
'''Course Outline'''<br />
* We will start the course by following along in the order of ''Building Blocks for Theoretical Computer Science'', see link above.<br />
<br />
'''Learning Outcomes'''<br />
* Basic math - ability to use basic algebra, properties of numbers, rules of exponents and logarithms<br />
* Proofs - understanding of what a proof is, ability to use the following methods of proof as needed - direct proof / by construction, by contradiction, by induction, by decomposition<br />
* Logic - ability to use the rules of logic (truth tables, DeMorgan's laws, etc.) in arguments<br />
* Integers - can use the properties of the integers to write algorithms and reason about their correctness<br />
* Sets, relations, functions - can apply the definitions of these concepts in proofs<br />
* Graphs, trees - understanding of standard definitions related to graphs and trees, able to argue basic properties<br />
* Asymptotic resource analysis (big-O) - can apply the definitions of big-O notation to compare different running time formulae, to simplify expressions, and to determine the big-O running time of algorithms<br />
* Complexity theory - understanding of definitions of basic complexity classes (L, P, NP, PSPACE, EXP), understanding of canonical problems in each class, can reason about these complexity classes<br />
* Notions of infinity - understanding of difference between countably and uncountably infinite, can use these in proofs<br />
* Probability - knowledge of basic definitions and properties of discrete probability, can apply to the analysis of randomized algorithms and processes<br />
* Regular languages - understanding of DFAs, NFAs, regular expressions and ability to produce models for commonly encountered languages<br />
* General models of computation - understanding of Turing-complete models of computation (Turing machine, circuits, programming languages) and implications<br />
* Computability - can give arguments whether a given problem is computable or not (e.g., the halting problem)<br />
* Notation - proper use of math notation (sets, logic, functions, summations, proofs, etc.)<br />
<br />
=Grading and Assignments=<br />
<br />
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.<br />
<br />
'''D'''<br />
* Pass- or higher achievement for ''all'' of the following<br />
* Hello unix lab (at least 2/2)<br />
* Math notation (at least 80%)<br />
* Math bases (at least 80%)<br />
* Truth table proof (at least 1.5/2)<br />
* Proof that a number is irrational (at least 1.5/2)<br />
* Euclidean algorithm - demo of running the algorithm (at least 1.5/2)<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''C''' <br />
* Pass or higher achievement for ''all'' of the above (at least 90% on quizzes, at least 2/2 on assignment problems)<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''B'''<br />
* <br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
'''A'''<br />
* In addition to the above...<br />
* At least 1 puzzle/challenge problem solved correctly (pass rating)<br />
* Pass+ rating on most of the above<br />
* Pass or higher achievement for ''all'' of the following<br />
* ''We will be filling in the minimum standards here as we begin the course and start having assignments and quizzes.''<br />
<br />
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.<br />
<br />
'''Late Work''' - <br />
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. <br />
<br />
'''Start Assignments and Quiz Studying Early''' - <br />
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.<br />
<br />
'''Expected Amount of Work''' - <br />
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.<br />
<br />
This is the foundation for the rest of CS, so it definitely pays off to do your best here. <br />
<br />
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.).<br />
<br />
'''Grade Meanings''' - <br />
The letter grades are intended to have the following rough meaning. The list of achievements needed for each was chosen with this in mind.<br />
* A+/A: You understand everything and probably could teach the course yourself.<br />
* B+/A-: You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.<br />
* 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).<br />
* 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.<br />
* F: Normally, students that get an F simply stopped doing the required work at some point.<br />
<br />
=CS-Specific Items=<br />
This section contains items that are generally the same for all CS courses (and in particular those taught by this instructor).<br />
<br />
==CS Course Policies==<br />
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.<br />
<br />
==Lab Help==<br />
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).<br />
<br />
==Course Announcements==<br />
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).<br />
<br />
==Classroom conduct==<br />
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).<br />
<br />
==Academic Integrity==<br />
Please follow these guidelines to avoid problems with academic misconduct in this course:<br />
<br />
''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.<br />
<br />
''Note on sources:'' if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.<br />
<br />
''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.<br />
<br />
''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.<br />
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.<br />
<br />
Please ask the instructor if you have doubts about what is considered cheating in this course.<br />
<br />
==Office hours (using Teams)==<br />
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/scheduler 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.<br />
<br />
==Canvas==<br />
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.<br />
<br />
==Lectures (using Zoom) ==<br />
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Participating online==<br />
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).<br />
<br />
So also the General Information section at the top of this page for setting up a normal check-in time with the instructor.<br />
<br />
=ISU Required Syllabus Items=<br />
The items in this section are required and are the same for every ISU course.<br />
<br />
==COVID-19 Information==<br />
Information specific to CS courses - [[Start of Term Announcements]]<br />
<br />
''Standard ISU language required in all syllabi (read this all once, then skim for your other courses)...''<br />
<br />
<br />
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.<br />
<br />
Students should contact the Office of the Dean of Students with questions by calling 812-237-3829.<br />
<br />
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.<br />
<br />
==Special Needs / Disability Services==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
==Disclosures Regarding Sexual Misconduct==<br />
''Standard ISU language required in all syllabi...''<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you witness or experience any forms of the above discrimination, you may report to:<br />
<br />
''Office:'' Equal Opportunity & Title IX; (812) 237-8954; Rankin Hall, Room 426 <br> <br />
''Email:'' ISU-equalopportunity-titleix@mail.indstate.edu <br> <br />
''Online:'' https://cm.maxient.com/reportingform.php?IndianaStateUniv&layout_id=10 <br />
<br />
Disclosures made to the following confidential campus resources will not be reported to the Office of Equal Opportunity and Title IX:<br><br />
''ISU Student Counseling Center:'' (812) 237-3939; Gillum Hall, 2nd Floor <br> <br />
''Victim Advocate:'' (812) 237-3829; HMSU 7th Floor <br> <br />
''UAP Clinic/ISU Health Center:'' (812) 237-3883; 567 N. 5th Street</div>Jkinnehttps://cs.indstate.edu/wiki/index.php?title=Truth_table_proofs&diff=3727Truth table proofs2023-01-27T14:12:14Z<p>Jkinne: /* Assignment 2 */</p>
<hr />
<div>Truth tables are used to show all possible values that a given logical expression might take. <br />
<br />
=Examples=<br />
==Definition of AND==<br />
The following gives the definition of the logical AND operation.<br />
<br />
{| class="wikitable" <br />
|-<br />
! A !! B !! A &and; B<br />
|-<br />
| false || false || false<br />
|-<br />
| false || true || false<br />
|-<br />
| true || false || false<br />
|-<br />
| true || true || true<br />
|}<br />
<br />
==Proof of one of De Morgan's laws==<br />
A truth table can also be used to prove a logical identity. The following proves De Morgan's law that &not; (A &and; B) is equivalent to (&not; A) &or; (&not; B). Notice that the truth values for these (the last two columns in the table) are always the same.<br />
<br />
{| class="wikitable"<br />
|- <br />
! A !! B !! A &and; B !! &not; (A &and; B) !! (&not; A) &or; (&not; B)<br />
|-<br />
| false || false || false || true || true<br />
|-<br />
| false || true || false || true || true<br />
|-<br />
| true || false || false || true || true<br />
|-<br />
| true || true || true || false || false<br />
|}<br />
<br />
==Disproof of a logical fallacy==<br />
Truth tables can also be used to disprove a logical fallacy. For example, [https://en.wikipedia.org/wiki/Affirming_the_consequent one fallacy] is to assume the converse of an implication holds. If you know that (A &rarr; B) is true, and you know that B is true, the fallacy would be to then conclude that A must also be true. Note that the statement - "if an animal is a mammal then it is also a vertebrate" - is true. If we have an animal that is a vertebrate (for example, a dog), it would be a fallacy to now conclude that the animal must also be a mammal.<br />
<br />
We will show that this is a logical fallacy - regardless of the statements A and B, just because we know A &rarr; B is true, we should not in general assume the converse is also true. First we remind you that (A &rarr; B) is equivalent to &not; A &or; B. What we want to look at is the claim: ((A &rarr; B) &and; B) &rarr; A. If this expression is always true, then we could rely on the converse to always be used. Let us first simplify the expression. It is equivalent to ((&not; A &or; B) &and; B) &rarr; A. This is equivalent to &not; ((&not; A &or; B) &and; B) &or; A. We can keep this formula in mind as we evaluate it's truth value for each possible value of A and B.<br />
<br />
Consider this truth table.<br />
{| class="wikitable"<br />
|- <br />
! A !! B !! A &rarr; B !! ((A &rarr; B) &and; B) &rarr; A <br />
|-<br />
| false || false || true || true<br />
|-<br />
| false || true || true || false<br />
|-<br />
| true || false || false || true<br />
|- <br />
| true || true || true || true<br />
|}<br />
In the second row, we see that the last column is false. This is where we should expect to see a problem - the place where B is true, but we should not be able to conclude that A must also be true. We have shown that we cannot always apply the converse.<br />
<br />
=Assignment 1=<br />
You will be assigned a [https://www.cs.odu.edu/~toida/nerzic/content/logic/prop_logic/identities/identities.html logical identity] to prove and a [https://en.wikipedia.org/wiki/Formal_fallacy logical fallacy] to disprove. For each, you are permitted and encouraged to simplify the expressions to make it easier to evaluate the expressions. You then write a truth table for each part - proving the logical identity, and disproving the logical fallacy. Include a similar amount of explanation as above.<br />
<br />
Unless otherwise indicated by your instructor, you can submit your solutions in whatever format you like - word document, pictures of it worked out on paper, physical paper, OneNote notebook link. If you send a link to an electronic document, make sure it is set so it is shared with your instructor.<br />
<br />
'''Pass rating check''' Each part must be correct to earn a 1/1 on that part. The total for the problems would be 2 points. You need to ''both'' hand in your work, and also check in with the help lab to demonstrate your proofs. You can use your work that you hand in, and should talk the GA through the proof. The GA will make note if you are not able to do this, or if it seems you do not fully understand the process. Your written work should follow the rules of writing good proofs - [