**Ground Rule Index:**

Contacts | Feedback/Questions | Blog |

Prerequisites | Learning Outcomes | Exams and Quizzes |

Textbook | Grading | Academic Dishonesty |

Communication | Piazza | Class/study Approach |

Course Materials | Homework | Cell Phones |

Email (aharrin@luc.edu), or preferably communications through Piazza (see below) are always appreciated, and with our online software, Zoom, we can set up separate synchronous times to work individually.

Starting off the semester I have office hours after our classes. See my office hour page for more complete and up-to-date hours.

Particularly since the class is blended, you will certainly have rather flexible access to me online at some times we agree on.

Email is always appreciated. Also we can use online software like Zoom to meet, when getting together on campus does not fit both our schedules. You will need a good broadband connection for synchronous online collaboration. See https://luc.zoom.us. This page links to various help documents.

Allan Miller, university ID: amiller17

Office hours will be determined later.

- Discrete Structures 163 (induction, formal logic, Boolean algebra, proof techniques, functions and relations, combinations, permutations)
- Data Structures 271, very important! (ADT's, insertion sort, selection sort, merge sort, quicksort, binary search, linked lists, binary trees, binary search trees, heaps, hash tables, finite graph basics, basic run-time analysis, big Oh notation, considerable experience with recursion)
- Calculus 130 or 161 – Limits make order estimates somewhat easier, and some of our standard bounds on sums are based on integrals, but even if your calculus is foggy or missing, you should be able to just use the collected results we have, based on calculus. Still, the logical, symbolic thinking practiced in calculus (and Comp 163) is very important.

All of the above should give you some mathematical sophistication. That is the hardest part, and many of you may need more. Please see me when you have trouble. We will review making clear arguments and critical reading.

**The Design & Analysis of Algorithms**, Third edition, by Anany Levitin,
Pearson/Addison Wesley, ISBN 9780132316811. Note, the second edition is
mostly the same and may be used instead for almost everything. Second
edition users, see the
mapping between the two editions.

We should cover some of all but chapters 10 and 12, with a few sections dropped or added, depending on the time at the end. Levitin has a distinctive format, that works well some of the time, and not others. I adjust the order in many places. See the schedule, with reading and writing assignments.

Piazza is a great course-centered interaction site: social media for courses if you will. Make sure you log in and give it your preferred email address. I will generally send announcements through Piazza, so I strongly suggest that you set up Piazza for frequent updates via email. I may occasionally add important notes and override your email preferences, so you get notified immediately.

- The basic public course materials will all be posted directly on the web under http://anh.cs.luc.edu/363.
- Further announcements, comments, and question solutions will appear in Piazza.
- Some private information between professor/TA and individual students will be handled through the University Sakai system. It will mostly be used for grades and class-wide individual submissions, like the Math pretest and take-home quiz submissions.

Please let me know, in person or via a message to me in Piazza, when you need something from the course that I have not thought to include, or not included in sufficient detail for you, or not presented from a point of view that you can follow. We are in this together. For me to succeed, I need you to succeed.

For course content questions that are not addressed in person, please post them on Piazza, not email.

You should be looking to help others, too: besides being good for the community, it is good for your grade. You are NOT graded down for expressing needs for help: to be clear about where the holes are in our preparation and to be proactive are positive. Lots of people have lots of questions about this course. Lots of topics need to be spiraled through, with more questions and a bit more understanding in each pass. Do not be shy with questions!

I am still experimenting with the best use of the features in Piazza. Suggestions for optimizing its use in our learning community are highly encouraged. More detailed information on the use of Piazza with this course is below in Homework/Piazza.

Do not forget my office hours; Look them up; make a separate appointment if that works better: Sitting down together and discussing an issue in depth, maybe pointing and drawing diagrams, is still very useful! Sometimes students need to loop through a topic many times, gaining a bit each time. With Zoom we can draw pictures online, too.

Our TA will also have office hours.

Foundation:

- Be able to use order estimates for run times
- in basic situations with loops and decisions
- in recursion (using the Master Recurrence Relation Theorem)

- Use basic probability to calculate averages or expected values
- Make logical arguments and read critically

Understand important data structures such as

- Graphs, directed graphs, directed acyclic graphs
- Priority queues, heaps
- B-trees

Understand important existing algorithms, such as:

- Merge sort
- Quicksort
- Bucket sort
- Depth-first search
- Breadth-first Search
- Dijkstra's Algorithm for shortest path
- Kruskal's and Prim's algorithms for minimum spanning trees
- Union-find algorithms

**Understand these algorithms at different levels (the central part):**

**Be able to follow the algorithms in simple concrete situations (play computer to illustrate results)****Calculate run times and resource needs****Recognize new scenarios where known algorithms are directly applicable****Given a somewhat novel situation, create solutions using variations or combinations of algorithms discussed**

Understand how many algorithms fit into a larger class of algorithms with common properties and strategies, for example

- All sorts using key comparisons
- Divide and Conquer algorithms
- Greedy algorithms
- Dynamic programming problems

- 25% Piazza and class contributions and edits to homework and other questions
- 24% Total from three take-home quizzes
- 16% Midterm exam
- 35% Final exam

I will enter your raw (not scaled) scores into the Sakai gradebook for you to confirm. I base your final grade on separate percentages for each part above.

I convert to course letter grades with the following minimum requirements:

A 93 A- 90 B+ 87 B 83 B- 80 C+ 77 C 73 C- 70 D+ 67 D 60.

It is hard to convert desired learning outcome straight into grades, with so many course components, but look at the boldface central outcome for different levels of understanding of algorithms: If you quite consistently succeed at the levels listed up through 2, 3 or 4, then it should roughly correspond to a grade of C, B or A, respectively.

We are using Piazza for most all aspects of communication, general questions and comments, discussed here, and in specifically for designated individuals posted homework solutions, in the next section.

Additions to Piazza come in several forms: general comments, questions, answers, discussion on an issue with a problem, edits to previous entries (this is a wiki), and polls. Entries can be directed privately to instructors (the TA and me) or to everyone. Entries for everyone can have your name shown or withheld from classmates. Polls that I put out can be completely anonymous.

Piazza has a very nice mouse-based equation editor, and we will be using a significant amount of mathematical notation. We will discuss it. Learn to use the equation editor. For those who like to write LaTex directly, that is OK, too.

The ways I would like you to handle Piazza entries vary with the situation:

- Before a problem is due
- Questions and comments posted for everyone that would help with a homework problem,
before an answer is posted, need to either be general or conceptual enough
not to give away solution details.
Do look early at the
homework, think, and post such questions, to get early help!
*If you have a question that is directly related to a solution you are thinking of,**it should be a private communication for instructors.* - General comments not addressing a particular problem
- These can be anything useful to the general community. If you found a good web site that addresses a course topic in a way that you like, post the URL with a comment. Of course you can always give your own direct comments! Requests for special emphasis in the next class make sense to go out to the whole class, too. After an initial request, "me, too!" additions are very helpful for me to plan how to make class time best support you!
- Questions
- Other than the restrictions around specific assigned problems, use this community for help. We will discover more ways as we go along! Do organize your materials so you know where to look first for resources. Be aware of the recent course reading and topics. Go to the community second.
- Answers
- Respond to the kinds of questions above! Be helpful within our guidelines.
- Discussion on a question
- There is a provision for discussion of issues separate from answers. If the issue is resolved, the issue can be marked closed (but it is a wiki - it could be reopened by someone else).
- Polls
- If I want quick aggregated responses to multiple choice questions, I may post an anonymous poll. Timely responses are appreciated.
- Announcements
- I will post announcements to Piazza, generally with an email then going immediately to your in-box to note it.
- Homework problem solutions and solution edits
- See the next section.

Reading, following examples, and absorbing general concepts is a start,
but applying them by doing problems is essential.
Also essential is critical evaluation of yours and others logic.
The exercises are designed to give you experience *doing* and engaging with
all the course topics.

The time scale for the class and homework may shift some. I will try to note time and exercise changes just before or very shortly after the class where the subject is introduced.

I allow and encourage students to work together at least in pairs on graded
homework in the past. I am trying to extend that in this class.
Before initial solvers and responders are assign, there will be a place in Piazza where
students can list themselves as a cooperative pair:
mostly working *together on each*
assigned problem, *not* splitting things up. Be engaged in each problem!
In the past students who tried to split things up have come to grief on exams!

Piazza only records the actual person posting. Each time you make a homework post for you and your partner, list the partner.

The problems are intended for your direct thinking and doing. Posted answers, and
edits to an earlier answer, should be from your pair's *personal work and thought*,
not from somewhere else, not taken from another resource like the internet,
not from old solutions to one of these homework problems from before this semester.
Using other sources is dishonest.

Always be mindful that particular answers are not the main point of the problems posed: The main thing is to develop the ability to understand and creatively combine and use the ideas behind the problems. If the answer falls in your lap from an outside source, you will likely learn very little. Make sure you are thinking about your process: how you are choosing initial approaches and why the next step is being tried. Students can be in denial, and think that following an already given solution is a substitute for the learning in creating a solution.

Remember,
exams and quizzes are *individual* work. You have to end up being capable yourself.
Make sure you are an active contributor to all parts of your work with a partner.
Active collaboration for initial learning is great. Critical evaluation is also important.

**Use my office hours!** A number of past students have indicated they
considered the course to be really hard before they started taking
advantage of office hours or online consultation,
and then they found the work much more
accessible. Take advantage of consultation, for sustained, individualized help!
Let me know if the posted hours do not work for you.

Some guidelines in your answers:

- Where an explanation or proof is required, show logic clearly, using full English and mathematical sentences. I will expect as much on quizzes and exams.
- Use indentation for blocks in algorithms, as in the text.
- When you provide a counter-example, show
*why*it serves as a counter example. - Use the equation editor where needed.

Here is some extra structure around assigned homework problems,
that we are trying as a
*part* of the discussion on the
Piazza
site. We use that fact that Piazza tracks contributions, so I can
give homework credit for all answers and edits:

- Everyone should work on all the problems in the regular homework.
It is
*much*less helpful for learning to only look at completed solutions that others come up with. - For regular assigned homework you may have a partner,
or stay as an individual. I'll refer to both arrangements as a "group".
A single group will be
*assigned*to post a solution to a specified problem in Piazza*on*the calendar Due Day (not the day before, not the day after). The solution must be original, not taken from any book or the internet. Larger groups will be assigned such problems more frequently. - For a specific problem one group will be designated as the
*assigned*reviewer. Reading an explanation critically is very important, and it is incorporated into the course here. This group should agree or correct/replace the original solution given by midnight of the day*after*the Due Date. You should have your own solution ready in case you do not like the original submission! And if you use a substantially different approach that illuminates the idea, do post yours as an alternate, along with any critique of the original solver. - Other groups may comment critically after the first review is due, or anytime after it is submitted. The simplest is "agree with <name>".
You are expected to read all solutions and edit solutions where they see can
be clarified, corrected, or replaced with something both correct and simpler, or
*add*your alternate, substantially different solution. of the problem from a different angle. These edits must also be original. - If nobody get a problem right. I will go over it in class. Then for completeness in Piazza, the original solver gets a day to post a correct solution, then if there is not one yet, the reviewer get the next day, and if there is still no correct solution, I invite anyone to add it.
- I have an initial grading rubric below. I am am open to changing it and the overall process if we see fairer, more effective ways to do it. I need your feedback!

I reserve the right to modify this if other approaches/weights turn out to make more sense.

I keep three sets of data for each student:

- A measure of the amount for solutions and reviews assigned. So more is expected of pairs, I count each solution or review assigned to a member of a pair for that hw as 1, but 1.5 for an individual. Then people with the minimal measure so far, will get assigned a solution or review next. I also publicize these numbers, so you can see when you are likely to be assigned something in the next homework.
- The cumulative score for each student (grading described below)
- Since not everyone will have been assigned exactly the same amount (though close, since I alway assign to students with the least assigned so far), I also keep what will be a denominator for the scoring fraction: what I would hope you would have scored so far. (Again related to the way I grade, below.)

For each problem a full new solution is worth 1:

- initial assigned solution
- 1 for fully correct, less for partially correct. 0 for missing or totally off

The score for the assigned reviewer and any later responders in the class depends on the
*quality of the critical evaluation of an earlier published solution* by a group contributing earlier:

- Assigned Reviewer
*agreeing*with first solver - .16 correctly, 0 incorrectly or not submitted. The .16 for agreeing correctly is what I hope for and expect!
- If the assigned solver does not submit a solution on the due date
*the assigned reviewer*becomes the initial solver, with solution due when your review is due, and earning up to 1 for a correct full solution, as an assigned solver would. Be ready with your own solution!- Any and all other groups writing follow-up comments where they
*Agree*after a previous contributor - .05 completely correctly,
**and -0.05 completely incorrectly**: the formula is (solution score agreed with - .5)/10. The agreement could be with the assigned reviewer, or with a later commenter who disagrees with what came before. The possibility of a negative grade should dissuade you from unconsidered, automatic "I agree" comments.

Where the earlier work is seen as incorrect, the first to make improvements get points. This applies to both the the assigned reviewer and any later follow-up commenter:

- Question after opened up to class for follow-ups
- Noting but not fixing a specific incorrect part, or place where important steps are skipped, .1 or more
- Fix (rather than agree: substantive correction)
- Max of .2 and difference in solution value: (value_after correction - value_before). Assigned reviewer has first chance, but could be a follow-up comment.
- Elaboration/clarification of basically correct thing
- depends on amount of clarification given.
It could be 1 for a full informative completely
*alternate*solution from the assigned reviewer or any group making a follow-up comment. - Wrap-up - fix incorrect solution after instructor has explained a problem nobody got completely.
- 1/2 of missing points. Assigned solver gets until midnight the day after class as first crack. After that, assigned reviewer the next day, anyone on the day after that.

With the different number of problems assigned and values based on group size,
everyone's *nominal* expectations for a homework may be different, based on number of problems as assigned solver, assigned reviewer, and follow-up commenter for the other problems. This sum becomes the denominator in the grade calculation for a student: add

- 1 for each assigned solution (I expect you to work and get help until it is right!)
- .16 for reviewing (most common should be agreeing with a correct solution)
- 0.05 for each of a fraction of the remaining problems where groups can give follow-up comments. The fraction of the problems where follow-ups are expected depends on group size for that homework: 1 (all) for pairs and .75 for an individual (three quarters of the remaining problems).

For example, a pair with two assigned solutions, one assigned review, with 10 *further* problems in the assignment where they could comment,
would nominally be expected to score 2*1 + 1*.16 + 10*.05*(1) = 2.66 for the assignment.
If they got their first solution correct (1), were only mostly correct and got .7 on the next, correctly reviewed for .16, and correctly agreed to 6 follow-ups (0.05 each),
plus added substantially in another follow-up, scoring .4 there, then the total score would be
1 + .7 +.16 + 6*.05 + .4 = 2.56.
Here the percentage on this single assignment would be (actual score sum) / (nominal sum expected).
In this example: 2.56/2.66 = about 0.9624

Another example: an individual who is assigned one solution, assigned one review, and has 11 other problems on the assignment that could be commented on: If they got the assigned solution (1), and as assigned reviewer correctly replaced a totally bad solution (1!), agreed in comments correctly on 7 problems (0.05 each), and totally blew one comment (-0.05), the score would be 1 + 1 + 7*0.05 + -0.05 = 2.3. The nominal expectation would be 1 + .16 + 11*0.05*(0.75) = 1.5725. The ratio would be an excellent 2.3/1.5725 = about 1.46.

Cumulative sums of actual scores and nominal expectations are kept for each individual student for all homework so far. The overall hw grade uses the cumulative score in the numerator, and cumulative nominal expectations in the denominator.

Note that while only your assignments as assigned solver or reviewer
get listed explicitly up front, the nominal expectation going into the scoring denominator
*assume you are commenting on other groups' solutions*. You may have not worked out other problems prettily, but make sure you have the idea, and *do comment critically*. Note that skipping the critical commenting
will come back to bite you not only in homework percentage,
but likely also in exam preparedness.

The expectations for each group vary with the assignment, but with those who have been assigned the least so far ending up getting the next problems, the expectations end up quite even at the end of the semester. Even if it does not come out exactly even, the nominal expectations for each student are in proportion to what they are actually assigned, so final cumulative percentages should be determined fairly: if a student got assigned slightly less, the total score expected will be slightly less.

This is a big class, with lots going on. I may have a hard time keeping up with everyone. To help insure continuous communication, you are assigned a weekly blog post in Sakai, to do Thursday after class or Friday of every class week (or Wednesday before Easter). I will try to respond before the next class. Each short blog post should contain:

- Where you are in reading/absorbing the material The current point may not be clear cut. If you have moved ahead but have major questions on earlier material, say so.
- How far you are on the exercises in the next written assignment (Solver/reviewer for sure, but also in understanding others).
- How it is going. Indicate any major issues. Note major insights.
- Make any suggestions or questions you have for me that were not addressed in class or office hours. If I asked a question in my previous comment to your journal, please respond.

While homework answered on Piazza will be set up to be done collaboratively, if you like,
*the grading for quizzes and exams will be for individual work*.

In-class Exam Schedule (updated in the course schedule and assignments):

Midterm: Thursday Mar 14 (tentative)Final Exam: Tues Apr 30, 1-3PM

I am planning on
four take-home quizzes, due by noon
on the following Monday, tentatively,
**Feb 25, Apr 1 and Apr 15**.

If I want to change this quiz timing, or add any, I will give at least a week's notice before sending out take-home quizzes. I will generally send take-home quizzes out at least 4 days before they are due. I am likely to give a 2-3 hour time limit on quizzes. Tentative due dates are listed in the course schedule and assignments.

Quizzes are not cumulative (except as the material is naturally
cumulative). Exams *are* cumulative. Exams and quizzes will not include
material that is new in the week immediately before the test.

You may prepare notes to use for this graded work. I will allow at least
the following number of sides of 8.5 x 11" paper notes: quizzes: 2,
midterm: 3, and final: 4. I will distribute copies of the formulas appendix
at the end of the book, so you do not need to include those in your notes.
*Other resources are not allowed.*

**Exam Grading**: Do not write down things on exams that you can see are
incomplete or incorrect without making some comment acknowledging this
-- it is better to know you are wrong or incomplete than to be wrong and
think you are right.

**Missed Exams** : If you must miss an exam, let me know well in
advance. Then if you have a good reason we can possibly make other
arrangements. I have little sympathy for people who inform me after the
fact for no good reason. I may completely excuse you from an exam if you
were sick or unable to attend for long enough. Most often if you cannot
take an exam at the usual time, I will want you to take it a little
later, BUT I WILL NOT LET ANYONE TAKE A LATE EXAM AFTER THE NEXT CLASS
PERIOD. If you somehow fail to let me know in a timely fashion that you
have an excuse and want to take the exam late, appear at my office hours
before the NEXT class after the exam, and I may be able to give you the
exam.

**IMPORTANT POLICY**: If you have an excuse for not being prepared to
take an exam, but decide to take it anyway, you don't get to change your
mind after you see a poor grade. In certain circumstances I may allow
you to delay an exam due to illness, but I will not let you be
reexamined due to a poor grade.

The penalty for cheating may be anywhere from a 0 on an assignment to a
grade of "F" in this course.
*The appropriate dean will be informed in writing of any cheating incidents.*

Cheating consists of, but is not limited to the following for all graded work:

- Using or copying another person's work in any fashion (other than collaborative work with your group on homework).
- Work includes outlines, algorithms, pseudo-code, code, and analyses.
- Allowing your own work to be copied or used by another student.
- Submitting as your own work something that has been written by another person, and people write web pages, so that includes material on the Internet.
- Using any unauthorized reference on an exam or assignment.

Help from any source, particularly from others in Piazza, *is fine*
concerning

- Course prerequisites, necessary math
- The meaning of a problem (not the plan for the solution or the actual solution).
- The restrictions of programming language syntax.

I have unfortunately needed to give out 0's in past semesters, with the accompanying referrals to the students' deans.

As a user of the campus network, you should be aware of your rights and responsibilities in

The class involves basic facts, processes, and analysis methods, plus creative combinations of solution ideas.

As much as possible for the last few years I have been doing my classes *flipped*, ,
with you making contact with the basic data and exposition through the book, web notes, and videos, once or more, on your time. The more you can
read the text and my web notes or look at videos
to get basic facts and process recipes *before* class, the
more time we can spend in class on things you cannot get easily from a
book: asking and answering questions you raise in reading and homework,
the analysis of problems, and creatively applying basic ideas you are
learning to somewhat novel situations.

Please give me feedback on what constitutes the best use of your time for the limited class hours we have.

The algorithms in the book are in pseudo-code. Runnable versions in convenient languages are good. I will supply some algorithms in Python 3 and perhaps some in Java or C#.

The class is also blended: We will start the semester getting to know each other and getting started in the classroom, with maybe a day to test online in Zoom. After about 4 weeks, other than for the midterm exam, we move online until the last couple of weeks of the course. Zoom keeps interaction easy. I will also record these online classes.

The following are legal statements you will find for any Loyola class doing class recordings, to assure your privacy:

In this class software will be used to record live class discussions. As a student in this class, your participation in live class discussions will be recorded. These recordings will be made available only to students enrolled in the class, to assist those who cannot attend the live session or to serve as a resource for those who would like to review content that was presented. All recordings will become unavailable to students in the class when the Sakai course is unpublished (i.e. shortly after the course ends, per the Sakai administrative schedule: https://www.luc.edu/itrs/sakai/sakaiadministrativeschedule/). Students who prefer to participate via audio only will be allowed to disable their video camera so only audio will be captured. Please discuss this option with your instructor. The use of all video recordings will be in keeping with the University Privacy Statement shown below:

Privacy Statement: Assuring privacy among faculty and students engaged in online and face-to-face instructional activities helps promote open and robust conversations and mitigates concerns that comments made within the context of the class will be shared beyond the classroom. As such, recordings of instructional activities occurring in online or face-to-face classes may be used solely for internal class purposes by the faculty member and students registered for the course, and only during the period in which the course is offered. Students will be informed of such recordings by a statement in the syllabus for the course in which they will be recorded. Instructors who wish to make subsequent use of recordings that include student activity may do so only with informed written consent of the students involved or if all student activity is removed from the recording. Recordings including student activity that have been initiated by the instructor may be retained by the instructor only for individual use.

This forces the consequence that during the semester you can *stream* class recordings while online, but you *cannot download* them for viewing later when offline.

Only you know the relative importance of any particular cell phone call,
and whether it is important for you to answer a call immediately rather
than later. I *do want* you to be respectful of my class and disrupt it
as little as is practical. If you get cell phone calls with fair
frequency, be sure to have the ring muted before coming to class. If you
rarely get calls, you might not mute it ahead, and your cell phone may
happen to ring. Get rid of the noise as soon as possible, and do not get
flustered. (I'll probably do that at least once.) I assume you will move
outside the classroom for a conversation. If you get fairly frequent
calls that you are likely to consider important answering, sit in a
place where your exit and re-entrance are as unobtrusive as possible.