CIS 700 Programming & Problem Solving Fall 2013
Instruction Staff Instructor: Chris Murphy –PhD Computer Science, Columbia Univ –Seven years professional experience seas.upenn.edu TA: Anne Foster –Second-year MCIT student 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 c lass 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
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
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
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
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