{"id":12,"date":"2014-12-30T17:39:10","date_gmt":"2014-12-31T00:39:10","guid":{"rendered":"https:\/\/blogs.ubc.ca\/cpsc320\/?page_id=12"},"modified":"2014-12-30T17:39:10","modified_gmt":"2014-12-31T00:39:10","slug":"syllabus","status":"publish","type":"page","link":"https:\/\/blogs.ubc.ca\/cpsc3202016w1\/syllabus\/","title":{"rendered":"Syllabus"},"content":{"rendered":"<p><a name=\"intro\"><\/a><\/p>\n<h2>Introduction<\/h2>\n<p>This course is about several broad categories of problems and problem-solving techniques (such as greedy algorithms, divide-and-conquer algorithms, dynamic programming, and the class of NP-complete problems) and gaining the tools and experience necessary to judge how a new problem might fit one of these categories, how to approach solving the problem, and how to analyze and adjust your solution.<\/p>\n<p>At the end of the course, you will be able to:<\/p>\n<ol class=\"onormal\">\n<li>Recognize which algorithm design technique(s), such as divide and conquer, prune and search, greedy strategies, or dynamic programming was used in a given algorithm.<\/li>\n<li>Select and judge several promising paradigms and\/or data structures (possibly slightly modified) for a given problem by analyzing the problem&#8217;s properties.<\/li>\n<li>Implement a solution to a problem using a specified algorithm design paradigm, given sufficient information about the form of that problem&#8217;s solution.<\/li>\n<li>Select, judge and apply promising mathematical techniques (such as asymptotic notations, recurrence relations, amortized analysis and decision trees) to establish reasonably tight upper and lower bounds on the running time of algorithms.<\/li>\n<li>Recognize similarities between a new problem and some of the problems they have encountered, and judge whether or not these similarities can be leveraged towards designing an algorithm for the new problem.<\/li>\n<\/ol>\n<p>You can also see a <a href=\"http:\/\/www.ugrad.cs.ubc.ca\/~cs320\/learning-goals.pdf\">more detailed list of topic-level learning goals<\/a>, although we will\u00a0alter the specific topics used to address the course-level learning goals.<\/p>\n<p><a name=\"prereqs\"><\/a><\/p>\n<h2>Prerequisites and Calendar Description<\/h2>\n<p>Available in the <a href=\"https:\/\/courses.students.ubc.ca\/cs\/main?pname=subjarea&amp;tname=subjareas&amp;req=3&amp;dept=CPSC&amp;course=320\">CPSC 320 UBC Calendar Entry<\/a>.<\/p>\n<p>Beyond these, brush up on probability and combinatorics (e.g., at least the intro to the Wikipedia article on <a href=\"http:\/\/en.wikipedia.org\/wiki\/Combination\">combinations<\/a>). You should also be comfortable reasoning using mathematical notation. You will need familiarity with summations, sets, relations, functions, asymptotic notation (O, \u03a9, \u0398), recursion, loop invariants, basic data structures (stacks, queues, linked lists, heaps, graphs, hash tables), sorting algorithms, and graph traversal (depth-first and breadth-first search).<\/p>\n<p><a name=\"tuts\"><\/a><\/p>\n<h2>Tutorials<\/h2>\n<p><strong>Tutorials begin on Monday 12 September.<\/strong><\/p>\n<p>Tutorials roughly alternate between review periods (review of\u00a0the previous week and practice for the next) and quizzes. The quizzes are &#8220;low-stakes&#8221; in that your quiz grade will be a small fraction of your grade on a follow-up assignment. (So, you <strong>could<\/strong> skip tutorial at the expense of\u00a0a small amount of credit. Unless you anticipate the course is\u00a0<strong>easy<\/strong>, you should attend! If you do think it&#8217;s easy, be sure you understand\u00a0the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Dunning%E2%80%93Kruger_effect\">Dunning\u2013Kruger effect<\/a>.)<\/p>\n<p><a name=\"grading\"><\/a><\/p>\n<h2>Evaluation<\/h2>\n<p>Your course mark will be based roughly on the following breakdown. The instructor reserves the right to change this scheme (but does not anticipate using that right).<\/p>\n<table border=\"1\">\n<tbody>\n<tr>\n<td>Assignments\/Quizzes (5-8)<\/td>\n<td>25%<\/td>\n<\/tr>\n<tr>\n<td>Midterm Exam<\/td>\n<td>25%<\/td>\n<\/tr>\n<tr>\n<td>Final Exam<\/td>\n<td>45%<\/td>\n<\/tr>\n<tr>\n<td>Pre-Class Preparation\u00a0Work<\/td>\n<td>1%<\/td>\n<\/tr>\n<tr>\n<td>Best of the 4 previous parts<\/td>\n<td>4%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>To pass the course, you must obtain a 50% overall mark and, in addition, achieve a passing grade on your overall exam mark (the weighted average of midterm and final exams). Students who fail the overall exam mark will receive as their course grade the minimum of their normally computed grade and 45%.<\/p>\n<p>We use\u00a0the &#8220;10% rule&#8221; for\u00a0midterms: If your final exam mark is more than 10% points above\u00a0your midterm exam mark, we replace the midterm mark with the\u00a0final mark minus 10% points. So,\u00a0if your final exam mark is <code>f<\/code> (a natural but mildly ominous-sounding letter), then the\u00a0midterm mark <code>m<\/code> is: <code>max(m, f-10)<\/code>.<\/p>\n<p>All assignments\/quizzes contribute equal weight toward the assignment\/quiz average; however, your lowest assignment\/quiz mark will be dropped.<\/p>\n<p>Pre-class preparation work will be collected either online at noon on the day of lectures with assigned work (with submission\u00a0links e-mailed to your @ugrad.cs.ubc.ca address) and be worth 2 points each. If <code>p<\/code>\u00a0is the total number of assigned\u00a0prep missions (because &#8220;mission&#8221; sounds awesome, and <code>p<\/code>\u00a0is a less ominous letter)\u00a0over the term and you earn <code>y<\/code>\u00a0points total, then your pre-class prep\u00a0grade will be <code>min(100, 100*y\/(0.75*2*p))<\/code>. In other words, you only need the equivalent of full marks on\u00a075% of these\u00a0to earn 100% on this component.\u00a0<strong>However,<\/strong> the hands-on nature of class time means I expect you to prepare for each class so you can learn and contribute!<\/p>\n<p>Finally, whichever of your assignment\/quiz, midterm, final, and pre-class prep\u00a0averages is best will be worth an additional 4% of your course mark.<\/p>\n<p>(Since the prep missions\u00a0should be relatively easy if you do the readings, you can earn a high mark on 5% of the course just by putting in organized effort. If, on the other hand, you want to skip all the lectures and manage on your own, you can do that instead and theoretically only lose 1%.. just please don&#8217;t land in the middle and regularly show up to lecture unprepared. Also, bear in mind that &#8220;In Theory, Theory and Practice are the same. In Practice, they differ.&#8221; Put another way: Skipping lectures is wonderful preparation for\u00a0failing the course.)<\/p>\n<p><strong>To have marking of any\u00a0assessment reviewed<\/strong> (except the final exam)<strong>:<\/strong> staple a note detailing all of your objections to the assessment and submit this to your instructor no later than two weeks after the week the marked assessment\u00a0was returned (regardless of whether you collected your assessment\u00a0at that time). (For online returns like scanned exams, just submit a separate note, but include your ugrad login ID and student number.) The instructor will review the marking. The instructor&#8217;s review decision is final and may either increase or decrease the assigned mark based on your objections or other aspects of the submission. For the final exam, there will be a period to review the exam with the instructor to learn from it. For marking disputes, see UBC&#8217;s <a href=\"http:\/\/www.calendar.ubc.ca\/Vancouver\/index.cfm?tree=3,49,0,0\">Review of Assigned Standing<\/a> policy.<\/p>\n<p><a name=\"dates\"><\/a><\/p>\n<h2>Important Dates<\/h2>\n<table border=\"0\">\n<tbody>\n<tr>\n<td><i>Add\/Drop Deadline<\/i><\/td>\n<td>20 September (Tuesday)<\/td>\n<\/tr>\n<tr>\n<td><i>Thanksgiving<\/i><\/td>\n<td>10 October (Monday)<\/td>\n<\/tr>\n<tr>\n<td><i>Drop with W Deadline<\/i><\/td>\n<td>14 October (Friday)<\/td>\n<\/tr>\n<tr>\n<td><i>Midterm\u00a0Exam<\/i><\/td>\n<td>20 October (Thursday)<\/td>\n<\/tr>\n<tr>\n<td><i>Remembrance Day<\/i><\/td>\n<td>11 November (Friday)<\/td>\n<\/tr>\n<tr>\n<td><i>Final Exam<\/i><\/td>\n<td>We&#8217;ll know when you do! See <a href=\"http:\/\/students.ubc.ca\/enrolment\/courses-registration\/exams\">UBC&#8217;s exam page<\/a>.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><a name=\"topics\"><\/a><\/p>\n<h2>Rough Topic Schedule<\/h2>\n<p>Here is a VERY rough schedule of topics and readings <i>very much ubject to change<\/i>. We&#8217;ll post reading assignments on this blog as they come out.<\/p>\n<ul>\n<li>Week 1: Introduction and asymptotic notation review. (Chapters 1 and 2.)<\/li>\n<li>Weeks 2 and 3: Graphs and Greedy Algorithms. (Chapters 3 and 4.)<\/li>\n<li>Weeks 4 and 5: Divide &amp; Conquer Algorithms and Recurrences. (Chapter 5.)<\/li>\n<li>Week 6: Catch-up or Get Ahead<\/li>\n<li>Weeks 7 and 8: Dynamic Programming. (Chapter 6.)<\/li>\n<li>Week 9: NP-completeness. (Chapter 8.)<\/li>\n<li>Weeks 10\u201313: Catch-up or Fun Stuff (additional topics that we select)<\/li>\n<\/ul>\n<p><a name=\"communication\"><\/a><\/p>\n<h2>Communication<\/h2>\n<p>We&#8217;ll post class and tutorial material and assignments as tagged blog posts here. Most other communication will go through our <a href=\"https:\/\/piazza.com\/\">Piazza<\/a> page. <strong>You are expected to read our course&#8217;s Piazza &#8220;Announcements&#8221; daily!<\/strong> Personal questions you would rather not post privately on Piazza can go to <a href=\"mailto:cs320@ugrad.cs.ubc.ca\">cs320@ugrad.cs.ubc.ca<\/a> for response by any staff member or to the <a title=\"People\" href=\"https:\/\/blogs.ubc.ca\/cpsc320\/people\/\">individual staff member<\/a> you wish to contact.<\/p>\n<p>Additionally, <a href=\"https:\/\/www.cs.ubc.ca\/getacct\/\"><strong>set up your @ugrad.cs.ubc.ca account immediately<\/strong><\/a>, as we&#8217;ll use it for a variety of purposes in the course. Test it by sending yourself mail at that address to ensure you <a href=\"https:\/\/my.cs.ubc.ca\/docs\/cs-email-accounts\">receive the mail either directly or via forwarding<\/a> (whichever you choose).<\/p>\n<p><a name=\"assignments\"><\/a><\/p>\n<h2>Assignments\/Quizzes<\/h2>\n<p>There will be roughly six\u00a0written assignments during the term, possibly including a small amount of programming. All will start as quiz questions in tutorial. Your mark on your (individual)\u00a0quiz submission is worth 5% of your mark for the whole assignment\/quiz. The other 95% comes from your (optionally group) submission of solutions to all the quiz questions plus occasional extra questions we add. (We reserve the right to make the quiz marking scheme more generous than the corresponding assignment marking scheme.)<\/p>\n<ul>\n<li><i>Submission:<\/i> Quizzes may only be submitted in your registered tutorial during the time set aside for the quiz. (Arrive on time!) Assignments will be submitted via <a href=\"https:\/\/my.cs.ubc.ca\/?q=node\/5320\">handin<\/a>.<\/li>\n<li><i>Schedule:<\/i>\u00a0Quizzes will normally be every-other-week in tutorial. You <strong>must<\/strong> attend your registered tutorial!\u00a0Assignments will normally be due Thursdays\u00a0at 5PM the week after their corresponding tutorial quiz, unless indicated otherwise on specific assignments.<\/li>\n<li><i>Late Policy:<\/i> Late work will receive <em>no credit<\/em>, but please contact us promptly if you believe you&#8217;ll be late. We may be flexible, and even if we&#8217;re not, we will try to be helpful. Remember, however, that we already drop the lowest assignment\/quiz mark.<\/li>\n<li><i>Collaboration:<\/i> See the <a href=\"#conduct\">academic conduct guidelines<\/a>.<\/li>\n<\/ul>\n<p><a name=\"exams\"><\/a><\/p>\n<h2>Exams<\/h2>\n<p>There will be a\u00a0midterm and a\u00a0final exam. Additionally tutorial quizzes will be run like exams (with an exception mentioned below).<\/p>\n<p>Straight memorization is not a course goal. So, quizzes and exams will be open-notes and open-book. (We intend for you to bring what you want, but if you push boundaries, we&#8217;ll hold you to bringing up to (the equivalent of) a 3-inch 3-ring binder of notes and 3 textbooks.)<\/p>\n<p>Pending scheduling (i.e., appropriate rooms and sufficient time, which we have for the midterm exam so far), each exam will have an individual and a group stage. Your overall mark on the exam will be the maximum of your raw individual mark and 85% of your individual mark plus 15% of your group mark. (However, to determine whether you pass the course, we will consider only your individual components, although we will use the 10% rule on individual scores for this calculation.)\u00a0<strong>EXCEPTION:<\/strong> the in-tutorial group stage\u00a0of quizzes will be just for practice and not collected or marked for credit.<\/p>\n<p><strong>Missing an exam:<\/strong> Do not write an exam if a medical factor might significantly impair your performance. If you are unable to write a <b>midterm<\/b> due to illness, inform your instructor <em>immediately<\/em>, detailing the period during which you were ill, but <strong>do not<\/strong> present a doctor&#8217;s note. The instructor will establish and explain accommodation at that time. If you are unable to write the <b>final<\/b> due to illness, contact your Faculty&#8217;s advising office (e.g., the <a href=\"http:\/\/www.science.ubc.ca\/students\/advising\/exams\">Science Undergraduate Advising office<\/a>) immediately.<\/p>\n<p>Furthermore, the midterm exam is an evening exam. So, we will accept any reasonable scheduling conflict as an excuse for missing it. (Here&#8217;s the boundary line between unreasonable and reasonable: If you see tickets to a concert during the exam\u00a0time that sounds pretty cool\u00a0<strong>after<\/strong> the term starts (and so\u00a0we posted\u00a0the exam date), that&#8217;s an <strong>unreasonable<\/strong> excuse. But, if you already bought tickets to that pretty cool concert\u00a0<strong>before<\/strong> the term started, that&#8217;s a <strong>reasonable<\/strong> excuse.) That said, we strongly encourage you to write the exam,\u00a0as accommodation may just involve back-calculating a midterm grade for you from the final exam.<\/p>\n<p><strong>Missing a quiz:<\/strong> We already drop the lowest assignment\/quiz, and the quiz component is worth only a small percentage of the assignment\/quiz. So, we do not anticipate waiving a missed quiz. If you miss more than one, please do drop us\u00a0a note (at <a href=\"mailto:cs320@ugrad.cs.ubc.ca\">cs320@ugrad.cs.ubc.ca<\/a>) to tell us why, and we&#8217;ll consider accommodation.\u00a0<strong>NOTE<\/strong>: If you missed quizzes and <strong>then<\/strong> did not submit the corresponding assignments, you must have missed a large chunk of the term. Your reason should explain that.<\/p>\n<p><a name=\"conduct\"><\/a><\/p>\n<h2>Academic Conduct<\/h2>\n<p>Collaboration enhances the learning experience. We encourage collaboration in various ways throughout the course, subject to the rules stated here:<\/p>\n<ul>\n<li><b>Assignments:<\/b> You may work on assignments (but not quizzes) in groups of up to three.\u00a0<strong>We encourage groups of two!<\/strong> We\u00a0grumblingly allow groups of three. Groups are described below. Your group may also work with any other person or resource subject to five rules:\n<ul>\n<li>The group must spend at least 15 minutes working on each problem independently before collaborating with others.<\/li>\n<li>Collaboration with others must be limited to discussion and brainstorming. No record of <strong>any sort<\/strong> (e.g., written or electronic material) may be exchanged or leave the brainstorming session. Nor may you bring your solution into the session (except in your head), since that tempts you to annotate it.<\/li>\n<li>After collaborating, each student must take a half-hour break from the problem. Watching <a href=\"http:\/\/en.wikipedia.org\/wiki\/Gilligan%27s_Island\">some brainless TV<\/a> is a recommended activity.\u00a0In other words, do something so distracting and inane that you must have learned anything you can reconstruct afterward.<br \/>\n<small>Treat electronic resources you consult like written resources (set them aside for a half-hour and then do not consult them while writing your solution).<\/small><\/li>\n<li>Each group must write up their own solution independently, using their own words to prove that they understand the problem on their own.<\/li>\n<li>Groups must acknowledge all collaborators or sources of assistance in their submission, although you need only name CPSC 320 course staff, handouts, and required textbook if you quote or adapt directly from them. (Despite previous rules, you <em>may<\/em> record the names of people you collaborate with! <strong>RECORD EVERYONE IN YOUR QUIZ GROUP IN TUTORIAL!<\/strong>)<\/li>\n<\/ul>\n<\/li>\n<li><b>Groups:<\/b> <strong>must<\/strong> submit only one joint solution to the assignment and <strong>will<\/strong> receive one grade for the assignment (but not the 5% for the quiz) that applies to every group member. We urge you to work collaboratively on the assignment like the group portion of the exam: attempt\u00a0the problems individually for a while, then <strong>come together to meet physically<\/strong> and hash out a\u00a0joint solution as a group. Any other approach is likely to lead to disaster on the exams. For advice on group work, speak with the teaching staff and check out <a href=\"http:\/\/collaboration.csc.ncsu.edu\/laurie\/Papers\/Kindergarten.PDF\">All I Need to Know About Pair Programming I Learned in Kindergarten<\/a>\u00a0(lighthearted but well-researched, for programming but applicable to written assignments).<\/li>\n<li><b>Exams\/Quizzes<\/b> will follow the University&#8217;s <a href=\"http:\/\/www.students.ubc.ca\/calendar\/index.cfm?tree=3,41,90,0\">Rules Governing Formal Examination<\/a>, including disallowing any communication by any means with anyone besides the exam&#8217;s invigilators except where specifically noted in exam instructions (i.e., in the group sections).<\/li>\n<\/ul>\n<p>Violation of any of these rules constitutes academic misconduct and is subject to penalties ranging from a grade of zero on a particular assignment to indefinite suspension from the University. If you are uncertain as to what is or is not reasonable collaboration, or you&#8217;re having problems understanding or keeping up, please contact the instructor or a TA. Don&#8217;t cheat! It sucks the soul from the course.<\/p>\n<p><a name=\"textbook\"><\/a><\/p>\n<h2>Textbook<\/h2>\n<p>Our required\u00a0textbook (from which we will have assigned readings!) is:\u00a0John Kleinberg and \u00c9va Tardos, <i>Algorithm Design<\/i>, Addison-Wesley Publishing company, 2005, ISBN 0-321-29535-8. (Note: Exams will be open-book.)<\/p>\n<p>You may find Kevin Wayne&#8217;s slides accompanying the book a good supplement: <a href=\"http:\/\/www.cs.princeton.edu\/~wayne\/kleinberg-tardos\/\">http:\/\/www.cs.princeton.edu\/~wayne\/kleinberg-tardos\/<\/a><\/p>\n<p>(You could even use them for your pre-class readings as long as you&#8217;re aware that they&#8217;re not the same as the textbook. &#8220;Buyer beware.&#8221;)<\/p>\n<h3>Other references<\/h3>\n<ul class=\"unormal\">\n<li>Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein, <i>Introduction to Algorithms, 3rd edition<\/i>, MIT Press, 2009, ISBN 0-262-03384-4.<\/li>\n<li>Sanjoy Dasgupta, Christos Papadimitriou and Umesh Vazirani, <i>Algorithms<\/i>, McGraw Hill Book Company, 2008, ISBN 0-07-352340-2. (you can find a draft <a href=\"http:\/\/www.cs.berkeley.edu\/~vazirani\/algorithms\">here<\/a>).<\/li>\n<li>Michael Garey and David Johnson, <i>Computers and Intractability: a Guide to the theory of NP-Completeness<\/i>, W.H. Freeman &amp; Company, 1979, ISBN 0-7167-1044-5.<\/li>\n<li>Donald E. Knuth, <i>The Art of Computer Programming, Volume 1-4a<\/i>.<\/li>\n<\/ul>\n<p>Online references:<\/p>\n<ul>\n<li><a href=\"http:\/\/jeffe.cs.illinois.edu\/teaching\/algorithms\/\">Algorithms, etc.<\/a> by Jeff Erickson. A good, up-to-date review of algorithms.<\/li>\n<li><a href=\"https:\/\/www8.cs.umu.se\/kurser\/TDBAfl\/VT06\/algorithms\/BOOK\/BOOK\/BOOK.HTM\">The Algorithm Design Manual<\/a> by Steven S. Skiana. A somewhat out-of-date, but engagingly written review of algorithms. (Also a print book now in 2nd edition.)<\/li>\n<li><a href=\"https:\/\/en.wikibooks.org\/wiki\/Algorithms\">Algorithms<\/a> on WikiBooks. (Open.. but spotty and strange in coverage. Maybe you can help!)<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Introduction This course is about several broad categories of problems and problem-solving techniques (such as greedy algorithms, divide-and-conquer algorithms, dynamic programming, and the class of NP-complete problems) and gaining the tools and experience necessary to judge how a new problem might fit one of these categories, how to approach solving the problem, and how to [&hellip;]<\/p>\n","protected":false},"author":7560,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-12","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blogs.ubc.ca\/cpsc3202016w1\/wp-json\/wp\/v2\/pages\/12","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ubc.ca\/cpsc3202016w1\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blogs.ubc.ca\/cpsc3202016w1\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ubc.ca\/cpsc3202016w1\/wp-json\/wp\/v2\/users\/7560"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ubc.ca\/cpsc3202016w1\/wp-json\/wp\/v2\/comments?post=12"}],"version-history":[{"count":0,"href":"https:\/\/blogs.ubc.ca\/cpsc3202016w1\/wp-json\/wp\/v2\/pages\/12\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.ubc.ca\/cpsc3202016w1\/wp-json\/wp\/v2\/media?parent=12"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}