Time and Location
We meet regularly on Thursday 11:00-13:00 in Shenkar 105. Please check the course schedule.
Please note that the lab time marked in your bidding schedules is for working on the project on your own.
The workshop projects will be interesting and "cool" but not easy!
- Software 1
If you do not meet the formal prerequisites but would like to attend the workshop, contact Oded or Rani.
- To introduce students to the developer point-of-view in a globally-connected system (i.e., the Internet), facing typical problems arising in this context and dealing with them using ingenious or industry solutions (e.g., open-source).
- To lead students through an end-to-end software development cycle:
- defining the project
- researching for similar projects
- learning required background (protocols, APIs, environment, …)
- designing the methods of implementation
- actual implementation
- testing and debugging
- adjusting project in response to feedback
- wrapping up the project and presenting it to the world.
- To give students a better understanding of team-based development (as opposed to solo projects): distribution of tasks, source control and integration of code.
- To learn something new while having fun!
In the first meeting, suggested projects will be presented and a brief introduction of the related topics will be provided. The students will split into groups of 1 or 2 or 3. Each group is required to choose a project by the second week of the semester. Please notify us about the chosen project and the group members as soon as you can.
The first part of the workshop is devoted to collecting, reading and understanding the material on the project. During the following month, each group has to present its plan to the instructor in a personalized meeting. You will have to explain in detail the implementation design and show understanding of the internals of the project. Emphasis on implementation and specific project goals will be given by the instructor. You will have to prove in your final presentation that the project goal are fulfilled. You are strongly encouraged to make this meeting as soon as possible.
The main part of the workshop is devoted to implementing the project. You are expected to test the code, analyze its performance and draw conclusions as to how it can be improved, what features can be added. Throughout the semester we will have three course meetings in which each group will describe its progress to class and will raise for discussion issues encountered while working on the project.
Submission is divided to three steps:
- Pre-submission. Each group will have a personal meeting with Oded and Rani, presenting their project in action. Although this presentation is part of the grade, it is intended mostly for feedback.
- Class presentation. On the last weeks of the semester, each group will present its project to the class.
- Submission. Each group will have another personal meeting with Oded and Rani, presenting their project in action. We want to see project changes based on feedback from pre-submission and class presentation.
Each group is expected to maintain its project page on the Wiki. The project page should 'advertise' your project and include overview, source code and documentation.
- Present project plan and get an approval,
- Participate in class discussions about your project and other projects,
- Present the project and answer questions, following the guidelines in methodology section.
The grade will consist of the project grade and the understanding/participation grade. The project grade will be based solely on the quality of the implementation and the demonstration. The understanding/participation grade will be based on the instructor's impression of your understanding of the material in individual meetings and in the project discussion in class meetings.
Needless to say, any copying or unauthorized sharing of information will result in a grade penalty or possible disciplinary action. This includes unauthorized (by the teacher) use of publicly available code (such as code provided on the Internet) for some of the tasks you are required to implement. When in doubt, ask.
- In some of the projects you may choose between Windows(2000/XP/Vista) or Linux as your OS of choice, but most should be OS-independent.
- You may write the project in Java or C/C++. If you want to use another programming language, please contact Oded or Rani for approval.
- Code clarity and documentation
- You are required to write a high level description of your code, its structure and main algorithms. Aside from developer documentation, you are required to write documentation for users.
- Submission of source code and documentation is on the project page on this site.
- Comment your code as clearly as possible.
- If possible, generate automatic documentation for your code (e.g., using Javadoc or Doxygen).