{"id":12,"date":"2014-12-30T17:39:10","date_gmt":"2014-12-31T01:39:10","guid":{"rendered":"https:\/\/blogs.ubc.ca\/cpsc320\/?page_id=12"},"modified":"2018-04-20T16:13:34","modified_gmt":"2018-04-20T23:13:34","slug":"syllabus","status":"publish","type":"page","link":"https:\/\/blogs.ubc.ca\/cpsc3202017winter2\/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 Wednesday 3 January.<\/strong><\/p>\n<p>Tutorials roughly alternate between TA-facilitated sessions (often preparation for assignments\/exams, supplementary material, or review of previous courses) and tutorial quizzes. Tutorial quizzes are low-stakes (see the grading scheme below) opportunities for timed, exam-like questions. They also set the stage for the assignment that follows them. (If you think the course is <strong>easy<\/strong>,\u00a0you <strong>could<\/strong> skip tutorial at the expense of\u00a0a small amount of credit. However, if you do think the course is easy, be aware that you may be misjudging your abilities as a new learner. See the fascinating <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 on the following breakdown. The course staff\u00a0reserves 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 (~5)<\/td>\n<td>23%<\/td>\n<\/tr>\n<tr>\n<td>Midterm Exams (2)<\/td>\n<td>30%<\/td>\n<\/tr>\n<tr>\n<td>Final Exam<\/td>\n<td>40%<\/td>\n<\/tr>\n<tr>\n<td>Tutorial Quizzes<\/td>\n<td>2%<\/td>\n<\/tr>\n<tr>\n<td>Pre-Class Quizzes<\/td>\n<td>2%<\/td>\n<\/tr>\n<tr>\n<td>Best of the 5 previous parts<\/td>\n<td>3%<\/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 individual exam mark (the average of the individual components of your midterm and final exams, weighted according to the table above). 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>Each assignment, each tutorial quiz, and each pre-class quiz contributes equal weight toward their respective averages. However, your lowest assignment and lowest tutorial quiz mark will be dropped.<\/p>\n<p>Pre-class quizzes\u00a0will be due online roughly weekly and be scaled to 2 points each, where your grade will be rounded up to the next integer. (So, a 30% on a quiz would earn 1\/2, and a 68% on a quiz would earn 2\/2) If <code>p<\/code>\u00a0is the total number of pre-class quizzes\u00a0and you earn <code>y<\/code>\u00a0points total, then your pre-class quiz grade will be <code>min(100, 100*y\/(0.8*2*p))<\/code>. In other words, you only need the equivalent of full marks on 80% of these\u00a0to earn 100% on this component.\u00a0<strong>However,<\/strong> the hands-on nature of class time means we\u00a0expect you to prepare for each class so you can learn and contribute!<\/p>\n<p>Finally, whichever of your assignment, tutorial quiz, midterm, final, and pre-class quiz averages is best will be worth an additional 3% of your course mark.<\/p>\n<p>(Since the pre-class quizzes are\u00a0relatively easy if you do the readings, you can likely earn a perfect mark on 5% of the course just by putting in organized effort. If\u00a0instead you want to skip the lectures and manage on your own, you can do that and <strong>theoretically<\/strong> only lose 2%.. 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 pre-class quizzes and the final exam)<strong>:<\/strong>\u00a0use GradeScope&#8217;s regrade request interface no later than two weeks after the week the marked assessment\u00a0was returned (regardless of whether you collected your assessment\u00a0at that time). The course staff will review the marking. Our review decision is final and may either increase or decrease the assigned mark based on your objections or other aspects of the submission.<\/p>\n<p>For pre-class quizzes, send a note by e-mail or private Piazza post to your course instructor. Be sure to include the name of the assessment (e.g., &#8220;Pre-Class Quiz #3&#8221;), your full name, your ugrad login ID, your student number, and <strong>all<\/strong> grading concerns, including your justification for why you should have received a different grade.<\/p>\n<p>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>First Day of Classes for CPSC 320<\/i><\/td>\n<td>3 January (Wednesday)<\/td>\n<\/tr>\n<tr>\n<td><i>Add\/Drop Deadline<\/i><\/td>\n<td>17 January (Wednesday)<\/td>\n<\/tr>\n<tr>\n<td><i>Midterm\u00a0Exam #1<\/i><\/td>\n<td>6 February (Tuesday)<\/td>\n<\/tr>\n<tr>\n<td><i>Drop with W Deadline<\/i><\/td>\n<td>9 February (Friday)<\/td>\n<\/tr>\n<tr>\n<td><i>Family Day<\/i><\/td>\n<td>12 February (Monday)<\/td>\n<\/tr>\n<tr>\n<td><i>Mid-Term Break<\/i><\/td>\n<td>19\u201323 February<\/td>\n<\/tr>\n<tr>\n<td><i>Midterm\u00a0Exam #2<\/i><\/td>\n<td>13 March (Tuesday)<\/td>\n<\/tr>\n<tr>\n<td><i>Good Friday\/Easter Monday<\/i><\/td>\n<td>30 March\/2 April<\/td>\n<\/tr>\n<tr>\n<td><i>Last Day of Classes<\/i><\/td>\n<td>6 April (Friday)<\/td>\n<\/tr>\n<tr>\n<td><i>Final Exam<\/i><\/td>\n<td>We&#8217;ll know when you do, but between 10 and 25 April<\/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 subject 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 here. Most other communication (including yours!) 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\/cpsc3202016w2\/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 and Tutorial Quizzes<\/h2>\n<p>There will be ~5 written assignments during the term. All start as quiz questions in tutorial. So, the time working on the quiz in tutorial will &#8220;kickstart&#8221; your assignment work.<\/p>\n<ul>\n<li><i>Submission:<\/i>\u00a0Tutorial 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 GradeScope.<\/li>\n<li><i>Schedule:<\/i>\u00a0Tutorial quizzes will normally be every-other-week in tutorial. Assignments will normally be due Mondays at 10PM ~1.5 weeks 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 and tutorial quiz marks.<\/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 two midterm exams and a\u00a0final exam. Additionally tutorial quizzes will be run somewhat like exams.<\/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), 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. <strong>EXCEPTION:<\/strong> the group stage\u00a0of quizzes will be 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>For evening midterm exams, 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 we have 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 tutorial quiz:<\/strong>\u00a0Tutorial quizzes occur during scheduled tutorial times, and we already drop the lowest tutorial quiz. So, we do not anticipate waiving a missed tutorial quiz unless there is a strong reason. If you miss more than one or have a strong reason, please do drop us\u00a0a note (as a private Piazza note or to <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 tutorial 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 <strong>also<\/strong> 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 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.) <small>We have been informed by previous students (but cannot confirm or deny) that the international edition of the textbook is cheaper and yet corresponds closely to the edition listed here.<\/small><\/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.<\/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<p class=\"link-more\"><a href=\"https:\/\/blogs.ubc.ca\/cpsc3202017winter2\/syllabus\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Syllabus&#8221;<\/span><\/a><\/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\/cpsc3202017winter2\/wp-json\/wp\/v2\/pages\/12","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ubc.ca\/cpsc3202017winter2\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blogs.ubc.ca\/cpsc3202017winter2\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ubc.ca\/cpsc3202017winter2\/wp-json\/wp\/v2\/users\/7560"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ubc.ca\/cpsc3202017winter2\/wp-json\/wp\/v2\/comments?post=12"}],"version-history":[{"count":4,"href":"https:\/\/blogs.ubc.ca\/cpsc3202017winter2\/wp-json\/wp\/v2\/pages\/12\/revisions"}],"predecessor-version":[{"id":2618,"href":"https:\/\/blogs.ubc.ca\/cpsc3202017winter2\/wp-json\/wp\/v2\/pages\/12\/revisions\/2618"}],"wp:attachment":[{"href":"https:\/\/blogs.ubc.ca\/cpsc3202017winter2\/wp-json\/wp\/v2\/media?parent=12"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}