{"id":7,"date":"2015-08-18T13:50:19","date_gmt":"2015-08-18T17:50:19","guid":{"rendered":"https:\/\/courses.bowdoin.edu\/education-2272-fall-2014\/?page_id=7"},"modified":"2015-09-22T12:07:04","modified_gmt":"2015-09-22T16:07:04","slug":"about","status":"publish","type":"page","link":"https:\/\/courses.bowdoin.edu\/computer-science-2200\/","title":{"rendered":"About"},"content":{"rendered":"<h2>Basic info<\/h2>\n<p><strong>Lecture (A)<\/strong>: Tu, Thu 10-11:25 (Searles 223, Toma)<br \/>\n<strong style=\"line-height: 1.714285714;font-size: 1rem\">Lecture (B)<\/strong><span style=\"line-height: 1.714285714;font-size: 1rem\">: M, We 8-9:25 (Searles 126, Majercik)<br \/>\n<\/span><strong style=\"line-height: 1.714285714;font-size: 1rem\">L1:<\/strong><span style=\"line-height: 1.714285714;font-size: 1rem\">\u00a0Fri 11:30 &#8211; 12:55 (Searles 126, Toma)<br \/>\n<\/span><strong style=\"line-height: 1.714285714;font-size: 1rem\">L2<\/strong><span style=\"line-height: 1.714285714;font-size: 1rem\">: Fri 10-11:25 (Searles 126, Majercik)<\/span><\/p>\n<p><strong>Prerequisites<\/strong>: csci 101 (Intro to CS) and csci 2101 (Data Structures). Generally speaking, a good mathematical background and good QR skills are not required, but are helpful.<\/p>\n<p><strong>Textbook (required):<\/strong>\u00a0Cormen, Leiserson, Rivest and Stein,\u00a0<a href=\"http:\/\/mitpress.mit.edu\/catalog\/item\/default.asp?ttype=2&amp;tid=11866\">Introduction to Algorithms<\/a>, 3rd Edition, McGraw Hill, New York, 1990. (<a href=\"http:\/\/www.cs.dartmouth.edu\/~thc\/clrs-2e-bugs\/\">bugs<\/a>).<\/p>\n<p><strong>Class webpage:<\/strong>\u00a0<i>https:\/\/courses.bowdoin.edu\/computer-science-2200<\/i>. \u00a0This site will contain all class-related material along the semester. The class does not have a Blackboard site.<\/p>\n<p><strong>Schedule:<\/strong>\u00a0For useful links and detailed class schedule, check\u00a0<a href=\"https:\/\/courses.bowdoin.edu\/computer-science-2200\/schedule\/\">Syllabus<\/a>.<\/p>\n<h2>Course overview<\/h2>\n<p>Coming up with solutions (algorithms) to problems, proving their correctness and analyzing their efficiency, from various points of view (CPU, IO, bandwidth, best-case, worst-case, etc) are some of the basic questions asked in Computer Science.<\/p>\n<p>This course is an introduction to the design and analysis of algorithms. We talk about analysing the efficiency of algorithms and introduce asymptotic notation and recurrence relations. We discuss fundamental data structures such as (search trees and augmented search trees) priority queues, skip lists and union-find data structures. We introduce major algorithmic problems such as searching, sorting and selection, matrix multiplication, optimization, graph problems, networks, string matching and NP-completeness. We discuss a variety of solutions to these problems, while illustrating techniques such as divide-and-conquer, dynamic programming and greedy.<\/p>\n<p>The class is theoretical and involves no programming.<\/p>\n<h2>Course goals:<\/h2>\n<ul>\n<li>To be able to analyze the asymptotic performance of algorithms using big-oh and big-theta notation<\/li>\n<li>To be able to compare multiple algorithms for a problem and predict performance<\/li>\n<li>To be able to argue informally that an algorithm is correct<\/li>\n<li>To be familiar with the fundamental algorithms and data structures<\/li>\n<li>To be familiar with the major design paradigms<\/li>\n<li>To be able to apply these techniques to new problems<\/li>\n<\/ul>\n<h2>&#8230;..and more broadly:<\/h2>\n<ul>\n<li>To get an appreciation of algorithms and an understanding of their importance and impact in Computer Science and beyond<\/li>\n<li>To improve problem solving skills and power of abstraction<\/li>\n<li>To develop a database of algorithms and techniques which you&#8217;ll use as building blocks to solve new problems<\/li>\n<\/ul>\n<h2>TAs and study groups<\/h2>\n<p><strong>TAs:<\/strong>\u00a0 Clara Hunnewell, Dan Navarro, Clara Belitz, Mingo Sanchez,<\/p>\n<p><strong>Study groups:<\/strong><\/p>\n<ul>\n<li>Sundays 7:30-9:30pm \u00a0[Clara Belitz]<\/li>\n<li>Tuesdays 7-9pm [Dan Navarro]<\/li>\n<li>Thursdays 6-8pm [Mingo Sanchez], 7-9pm [Clara Hunnewell]<\/li>\n<\/ul>\n<p>All study groups are in\u00a0Searles 224.<\/p>\n<h2>Labs and Homework<\/h2>\n<p>The lab time is dedicated to \u00a0practice problems, and sometimes to finishing some of the details from lectures. A lab will usually contain a set of problems to be completed in the lab, and a problem set that becomes the homework assignment for the following week. \u00a0Learning in this class depends crucially on seeing new problems, and we strongly suggest that you spend the lab time working on the suggested problems, rather than starting the assignment.<\/p>\n<p>The assignment is considered an opportunity for learning and completing the assignment is a learning\u00a0<b>process<\/b>. You are not expected to sit down for a few hours and solve everything in a breath! Instead, you are expected to view it as a process: read the problems, understand what they are asking, come up with initial solutions, figure out whether they work or not, fix them, repeat. The whole process is supposed to be interactive between you, the group of people you collaborate with, \u00a0the TAs and study group leaders, and the instructors.<\/p>\n<p>The course relies heavily on group work and peer instruction, so it is crucial that you attend all classes and all labs. There is a lot of research that shows the benefits of peer instructions compared to standard lecturing. The process of explaining an argument is beneficial for everybody involved. You&#8217;ll work in groups in class, during labs, and in the study groups.<\/p>\n<h2>Homeworks, Exams and Grading policy<\/h2>\n<p><strong>Homework:<\/strong>\u00a0The weekly lab will contain some problems to be solved in the lab, and a set that constitues the homework for the subsequent week. The homeworks will generally be due a week later (unless specified otherwise). Late assignments are not accepted (except in case of medical reasons).<\/p>\n<p><strong>Exams:<\/strong>\u00a0There will be two exams, one half-way through the semester [see syllabus], and the second one during the final exam period [check precise date in posted in polaris]. Tentatively, the first exam will be take-home, the second exam will be in-class; this is just tentative, and may change. \u00a0The exams will be open book and open notes, and non-cumulative (to the extent possible).<\/p>\n<p><strong>Homework collaboration policy:<\/strong>\u00a0You are encouraged to work on problems in a group. You will find that you will gain a better understanding of the material by discussing the problems with your partners. However, you must write up the solutions\u00a0<strong>individually<\/strong>. Limit your collaborators to three or less, and list the names of the collaborators on the homework.<\/p>\n<p><strong>Grading policy:<\/strong>\u00a0The final grade is determined as follows:<\/p>\n<ul>\n<li>Homework assignments (40%).<\/li>\n<li>2 exams (2 x 30 = 60%).<\/li>\n<li>Class participation (5%)<\/li>\n<\/ul>\n<h2>Topics<\/h2>\n<p>The following general topics will be covered, which correspond to chapters in your textbook and will be studied approximately in the same order as they appear in the textbook. For a precise schedule, check the\u00a0<a href=\"http:\/\/www.bowdoin.edu\/~ltoma\/teaching\/cs231\/spring15\/syllabus.html\">syllabus<\/a>.<\/p>\n<ul>\n<li>Mathematical foundation (growth of functions, summations, recurrences, induction)<\/li>\n<li>Sorting algorithms (insertion sort, selection sort, mergesort, quicksort, heapsort, sorting lower bounds, bucket sort, radix sort)<\/li>\n<li>Searching and data structures (binary search trees, red-black trees, augmented search trees, skip lists)<\/li>\n<li>Priority queues (binary heap)<\/li>\n<li>Selection<\/li>\n<li>Paradigms (divide-and-conquer, greedy, dynamic programming)<\/li>\n<li>Graph Algorithms (traversal, minimum spanning trees, shortest paths)<\/li>\n<li>[Time-permitting: Network algorithms (network flow) and\u00a0String matching algorithms]<\/li>\n<li>NP-completeness (quick intro)<\/li>\n<\/ul>\n<h2>Academic Integrity<\/h2>\n<p>You are expected to follow Bowdoin&#8217;s academic honor code. Collaboration on homeworks is encouraged, however you are responsible to write the solutions on your own, and list the names of all your collaborators. You may not glance over someone else&#8217;s written solution, and you may not share your problems sets and exams with anybody else, this term or in the future. Any violation will be reported and treated according to Bowdoin&#8217;s academic integrity guidelines.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Basic info Lecture (A): Tu, Thu 10-11:25 (Searles 223, Toma) Lecture (B): M, We 8-9:25 (Searles 126, Majercik) L1:\u00a0Fri 11:30 &#8211; 12:55 (Searles 126, Toma) L2: Fri 10-11:25 (Searles 126, Majercik) Prerequisites: csci 101 (Intro to CS) and csci 2101 (Data Structures). Generally speaking, a good mathematical background and good QR skills are not required, [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-7","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/courses.bowdoin.edu\/computer-science-2200\/wp-json\/wp\/v2\/pages\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/courses.bowdoin.edu\/computer-science-2200\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/courses.bowdoin.edu\/computer-science-2200\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/courses.bowdoin.edu\/computer-science-2200\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/courses.bowdoin.edu\/computer-science-2200\/wp-json\/wp\/v2\/comments?post=7"}],"version-history":[{"count":0,"href":"https:\/\/courses.bowdoin.edu\/computer-science-2200\/wp-json\/wp\/v2\/pages\/7\/revisions"}],"wp:attachment":[{"href":"https:\/\/courses.bowdoin.edu\/computer-science-2200\/wp-json\/wp\/v2\/media?parent=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}