Course overview slides

Download Report

Transcript Course overview slides

CIS 700
Programming & Problem Solving
Fall 2013
Instruction Staff
• Instructor: Chris Murphy
– PhD Computer Science, Columbia Univ
– Seven years professional experience
– cdmurphy @ seas.upenn.edu
• TA: Anne Foster
– Second-year MCIT student
– anfoster @ seas.upenn.edu
Programming & Problem Solving
• Originally offered as a seminar course by
Donald Knuth at Stanford
• Later taught by Stanford alum at Columbia
Univ, NYU, etc.
• This is the fourth offering here at Penn
Q: “What is Computer Science?”
A: The study of algorithms.
Or, algorithmic problem-solving.
Create
Implement
Analyze
Communicate
Computer Science is an activity
in which we create, implement,
analyze, and communicate
solutions to algorithmic problems.
Educational Objectives
• Emphasize four aspects of problem
solving in Computer Science
– Create an approach (algorithm)
– Implement a solution (programming)
– Analyze the results (understanding behavior)
– Communicate so that others may understand
• Along the way, you may learn something
about Java, graph theory, AI, analyzing
algorithmic complexity, organizing a
technical paper, working in groups, etc.
Educational Approach
• Problem-Based Learning (PBL)
– Learn by doing something, not by listening to
someone else talk about it
– Work on a problem and then use class
meeting time for discussion, interaction, and
directed guidance
Problems (“Projects”)
• Generally consist of programming the
behavior (“intelligence”) of an actor (“agent”) in
some sort of simulation
• There are no “right” solutions!
• You may want to pursue a solution that is
good in the general case
• You may instead want to pursue a solution
that is best in very specific cases
• Most important that you explore, implement,
understand, and communicate a solution
Starting a Problem Cycle
• Each cycle starts with an introduction of the
problem and addressing any clarification issues
• A simulator will be provided to you (so that you
can implement the “agent”) and we will discuss
the API that you will use
• Then we create groups of 2 students
– You can’t work with the same person more than once
• The deliverable for the next class meeting will be
discussed, as well as metrics for measuring how
“good” a solution is
Class Meetings
• Some deliverable is due at the start of every
class meeting
• Each class meeting will consist of short
demos by each group and a discussion of
their progress
• We will agree upon further deliverables as a
group and modify the project definition,
restrictions, assumptions, etc. as needed
Class Participation
• Every group is expected to show
measurable progress at every class
meeting
• Every student is expected to contribute to
the group discussions
• Attendance is essentially mandatory!
– If you miss more than two class meetings, you
will be asked to drop the course
Finishing a Problem Cycle
• Each problem cycle should last around
three weeks
• If we feel that we are not making progress
as a group, we may move on to the next
one a bit earlier than planned
• At the end of the cycle, the TA will run a
final simulation of all groups’ submissions
and will post the results
Final Deliverable
• After the final simulation, you will write a
report in which you describe your
solution(s) to the problem and analyze the
results of the simulation
• On the final class meeting for a problem
cycle, each group will present their results
to the class
Course Grading: Tentative
• Quality of your solutions to each problem (70%
of grade)
– Based on final report and analysis
• Individual contribution to group project (15%)
– As evaluated by your teammates
• Individual contribution to class discussion (15%)
– As evaluated by the instruction staff
Admission to the Course
• Enrollment is strictly limited to 20 students
• If you’re still interested by the time this class
meeting is over and have not registered,
please speak to me
• Students may not audit or sit in (sorry!)
Course Pre-requisites
• Proficient in Java (at least two years)
• Recommended:
– Some Algorithms course: 320; 502
– Some AI or ML course: 391; 520, 521
• You also should have experience working
in groups, preferably in some sort of
leadership role
Questions?
Problem #1: Organisms
Problem #1: Organisms
• Organisms live in a world in which they
can eat, move, or reproduce
• Food appears and grows randomly
• Goal: implement a behavior such that your
species survives the longest
• We will have variations in which there are
multiple species in the world
simultaneously
Problem #1: Logistics
• Sept 3: Introduce problem, install
simulator, form teams, etc.
• Sept 20ish: submit final implementation
• Sept 24: Final presentations
• Sept 26: Final report due
Problem #2: Mosquitoes
Problem #2: Mosquitoes
• Move lights around a “world” to try to
attract mosquitoes and then bring them to
a collector
• Obstacles in the world mean you need to
do some planning
• Goal: collect all mosquitoes as quickly as
possible
Problem #2: Logistics
• Sept 26: Introduce problem, etc.
• Oct 8: Class canceled!
• Oct 18ish: submit final implementation
• Oct 22: Final presentations
• Oct 24: Final report due
Problem #3: TBA
• This will be a new problem not previously
used in CIS 700
•
•
•
•
Oct 24: Introduce problem, etc.
Nov 8ish: submit final implementation
Nov 12: Final presentations
Nov 14: Final report due
Problem #4 (possible): Cats & Dogs
Problem #4 (possible): Cats & Dogs
• 2-player game in which there are 4 cats
and 45 dogs on a 7x7 grid
• Principle of Unequal Forces: players have
different rules for moving and different
goals for winning
• Minimax is an obvious approach: but is it
better to spend time on your heuristic, or
looking farther ahead?
Problem #4 (possible): Airplanes
Problem #4 (possible): Airplanes
• Given a flight manifest of origins,
destinations, and departure times, come
up with a plan to get all planes to their
destinations as quickly as possible
• Planes may not come within a certain
distance of each other
• Planes move at a constant velocity
• Planes can only turn by a certain amount
per time step
Problem #4: Logistics
• Nov 14: Introduce problem, etc.
• Nov 28: Happy Thanksgiving!
• Dec 6ish: submit final implementation
• Dec 10: Final presentations
• Dec 12ish: Final report due
For Next Time…
• If you have not yet registered but are
interested, please talk to me soon
• If you’re on board, please bring a laptop
with Eclipse (preferably Java 7) installed
to the next class
• Next class meeting: LEVINE 307