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.
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.