CS 4341/6341: Continuous Algorithms

Course overview, policies



About
Announcements
Modules
Coursework
FAQ


Java API

  • Instructor: Prof. Rahul Simha

  • Time/place:
    • Class: Mondays, 3.30-6.00pm

  • Office Hours: (2nd week onwards)
    • Tuesdays 3-3.45pm online.
    • Tuesdays 4.00-4.45pm online.
    Zoom/webex will posted in Blackboard.
    Note: If nobody shows up in the first 10 minutes, the online session will be terminated.

  • TA: TBD

  • TA office hours: TBD

  • Prerequisites: CS 2113 or equivalent (See undergraduate curriculum).

  • Official course description: Overview of structures in continuous mathematics from a computational viewpoint. Main topics include simulation, computational modeling, machine learning, neural networks, text classification, statistical language processing, robot control algorithms.

  • My description: To understand what this course is about and why you should consider taking it, let's first examine the standard CS algorithms course. What do we learn in that course? The standard course features data structures (trees, tries, hashing), graph algorithms (DFS, BFS, Dijkstra), discrete optimization and NP-completeness. Almost any textbook on algorithms has these topics at its core. The problem-solving paradigms we learn have to do with divide-and-conquer, dynamic programming, recursion and the use of appropriate data structures.

    Yet, there is a whole world of algorithms that are both important and are fundamentally different. These algorithms include:

    • Algorithms that simulate physical reality, for example the motion of objects or interactions between chemicals, or complex systems such as transportation networks.
    • Algorithms that reason about probability, or that work with probabilistic quantities (We call them simulations).
    • Algorithms that control robots, both at the low level (controlling movement) as well as at the high level (planning a path).
    • Algorithms that involve learning or recognition, for example, face-recognition or handwriting recognition.
    • Algorithms that involve understanding natural languages.
    What is common to all these algorithms, and what differentiates them from algorithms in the standard course, is that they are all based on continuous structures or continuous mathematics. Thus, while graph algorithms are based on discrete structures (graphs), a simulation in contrast involves real numbers. The purpose of this course is to give you an overview of this area, introduce you to key ideas, and along the way, stimulate interest in the very different types of problems you can solve with this approach.

  • Learning outcomes: By the end of the course, you should be able to:
    • Develop an understanding of key concepts in areas of continuous mathematics, such as calculus/ODEs, probability, and optimization, useful to computer science.
    • Understand how these concepts are applied to computer science problems.
    • Apply techniques and algorithms learned to computer science problems, especially to the three motivating problem areas of the course.

  • Textbook: There is no required textbook. All the material is on the course website. For supplemental reading, there's no book that covers all the material we need. Here are some suggestions, if you like having a book by the side:
    • Introduction to Probability Models. S.Ross. Ross is easily one of the best textbook writers in mathematics, especially in probability. The writing is concise and the examples outstanding.
    • An Introduction to Computer Simulation Methods: Applications to Physical Systems. H.Gould, J.Tobochnik and W.Christian. An accessible exposition of simulating physical systems.
    • Discrete Event Simulation: A First Course. L.Leemis and S.Park. A nice introduction to discrete-event simulation. (Full disclosure: Larry and Steve were former colleagues.)
    • Machine Learning. S.Marsland. This is an entry-level textbook in machine learning, not too detailed yet covering most important topics. For more details there are the well-known books by Bishop and Duda et al.

  • Programming load: The course is not intended to be a heavy load. There will be programming assignments and group projects, but no exams. The idea is to see if we can apply the concepts learned to some practical problems. Students may potentially propose projects.

  • Grads vs. undergrads: Undergrads will be graded on a different scale, and will possibly work in teams. Yes, we recognize that you are taking an elective course.

  • Coursework and grading:
    • 2600 points for module exercises
    • 3000 points for 4-5 Assignments
    • 1500 points for the team project

  • Submission:
    • All exercises and assignments that have their own webpages (linked to from the coursework page) will be submitted via your Unix accounts. Follow these instructions when submitting work.
    • The module exercises will need to be submitted via Blackboard. Use a single zip file for each module's exercises.
    • All module exercises need to be submitted, regardless of whether they are covered in class, unless otherwise specified (For some modules, the Coursework table will explicitly list exercises.)

  • Late work policy:
    • Every student will get to use four extensions in the semester:
      • A single one-time-use 1-day extension.
      • A single one-time-use 2-day extension.
      • A single one-time-use 3-day extension.
      • A single one-time-use 6-day extension.
      Each extension can be used only once, and the entire extension will be applied. (That is, you can't submit something three days late, and claim that you've used only part of the 6-day extension.) You do NOT need to tell us you are using an extension, we will merely apply the best fit in the order we get the submissions. You also cannot pick and choose which extension to apply.
    • None of the extensions can be applied to the very last due date, since we need to have enough time for final grades.
    • Thus, a submission is considered on time if it's submitted by the deadline or if one of the extensions above are applied. Otherwise, it's late.
    • For any exercise that is late inspite of extension, or if extensions are used up, no points will be awarded.
    • For any assignment that is late inspite of extension, or if extensions are used up, points will be taken off as follows: 33% for each 24-hour period after the due date/time. These points will not be pro-rated hourly. Thus, if an assignment is due 5pm Oct 19th, a submission at 5.05pm Oct 19th loses 25 percent.
    • It's best to save the 6-day extension for illness. If an illness requires more than 6 days of recovery during which doing school work is very difficult, a doctor will need to clarify that more than 6 days are needed.

  • Laptop/phone/device policy: You are expected to turn off or silence your phones and other such devices in class. Since all material is available online on this website, there should be no need to take notes on a laptop. Only one laptop per team should be open during class time. All other laptops and devices should be closed during class.

  • Email policy: No debugging by email. Stop by office hours - it's much easier that way.

  • Academic Integrity policy:
    • In this course, you will be expected to work on all assigned coursework by yourself, unless otherwise specified by me or circumscribed by teamwork. If you have any questions whatsoever regarding these policies, see me during office hours.
    • You may not, without my permission, exchange course-related code with anyone (including anyone not registered in the course), or download code for use in your coursework, or use material from books other than the textbook. Likewise, you may not look at anyone else's code or show your code to anyone else. Protect your work: for example, be careful not to leave your printouts around.
    • I can't imagine you'll be using a tutor in this course, but if you do, All tutors for this class need to first register with me, by meeting me during office hours.
    • If you use material in your assignments that are from outside the course material, then you should be prepared to explain that material. The instructor and TA's reserve the right to question you on your use of extraneous material. Failure to answer such questions might be viewed as grounds for an integrity violation.
    • The Academic Integrity Code will apply to this course. Please read through the code carefully.
    • Penalties for violating the code or the policies described here include failing this course, and are elaborated in the Academic Integrity Code.

  • If you have a disability that may effect your participation in this course and wish to discuss academic acommodations, please contact me as soon as possible.

  • Teams:
    • When pairs of students may work as a team, team members can share code (this is the only exception to the integrity policy above), but will submit individual work.
    • More will be expected of grad teams than individual grads.

  • Directory structure on your laptop:
    • Create a directory (folder) called contalg off of your home directory. All your course materials, programming assignments and in-class exercises will be inside this folder.
    • Under contalg, create one folder for each module, such as module1, module2 ... etc. Inside module1 is where you will have your answers to the in-class exercises for Module 1.
    • You will similarly create folders for the assignments and exercises as we proceed in the course.

  • Attitude:
  • We need to touch upon two attitude-related issues. One, since this is an elective, project-oriented course, you ought to take this opportunity to learn by plunging into the material and by taking on an interesting project that could become eventuall become a research project beyond the course. Second, if you are a math-phobe, you should not let that get in the way of appreciating the material, much of which is based on continuous mathematics but much of which we will cover computationally. More about this in class.

  • Minimum course load: In a 15-week semester, including exam week, students are expected to spend a minimum of 100 minutes of out-of-class work for every 50 minutes of direct instruction, for a minimum total of 2.5 hours a week. A 3-credit course includes 2.5 hours of direct instruction and a minimum of 5 hours of independent learning, or a minimum of 7.5 hours per week. More information about GW's credit hour policy can be found at: provost.gwu.edu/policies-forms

  • Statement on inclusive teaching. It is my intent that students from all backgrounds and perspectives be well-served by this course, and that the diversity that the students bring to this class be viewed as a resource, strength and benefit. Your suggestions are encouraged and appreciated. Please let me know ways to improve the effectiveness of the course for you personally, or for other students or student groups.