Difference: CS290Spring09Hw (1 vs. 20)

Revision 202009-03-30 - KonstantinosMenychtas

Line: 1 to 1
 
META TOPICPARENT name="CS290Spring09"

CSC 290A, Spring 2009: Homework

Line: 14 to 14
 

Team Project: Instant Messaging Sever for Browser Clients. NEW

Deleted:
<
<

Stage 1: Basic server

 In this project, you will work in a group to develop an instant-messaging server. The basic server accepts HTTP requests to establish client accounts and passwords, maintain on-line status, organize pairwise and group communication, and store message history.

The client can be any Internet browser program such as Firefox or IE. Let's say that an interested user learned about your server and its URL through you, a link on some web page, or your advertisement on campus. The functionalities of the server are organized in several basic page views. First, the user comes to the front page of the server, which allows a new user to register and an existing user to log in. You may use clear text to transfer and store user passwords, but we strongly recommend you use the encryption support of HTTP.

Line: 34 to 32
  The project is evaluated at the weekly report for 15 min per team each Tuesday during class. The report has two parts. The first is a slide presentation of the progress in the last week and the plan for the next week. It includes progress made not just in system implementation but equally importantly system design and user demand/feedback analysis. You will use the software development process known as agile development---chiefly rapid prototyping and iterative improvements. The second part of the report is your system, or if the system is not yet developed, a demonstration of some features of your design.
Changed:
<
<
The length of stage 1 is about three weeks starting from Friday March 27 and ending April 14, with three in-class presentations on March 31, April 7, and April 14.

Stage 2: Extensible server

>
>
The length of this first stage is about three weeks starting from Friday March 31 and ending April 21, with three in-class presentations on April 7, April 14 and April 21.
 
Changed:
<
<
Depending on the available time and the progress and discussion of stage 1, we will extend the design of the basic server to allow a user to add and distribute new functionalities. We will post the design requirements in the next week.
>
>
Extensions:
 
Changed:
<
<
For resources, see class slides and references especially on the following subjects:
>
>
Depending on the available time and the progress and discussion of first stage, we will extend the design of the basic server to allow a user to add and distribute new functionalities.The design requirements will be updated according to progress, but some references with ideas on possible extensions can be found below:
 
  • HTTP/CGI/Web 2.0 programming, class schedule table Feb. 19, 23, and 25.
  • Source-code control through subversion, class schedule table Feb. 12.

Revision 192009-03-30 - KonstantinosMenychtas

Line: 1 to 1
 
META TOPICPARENT name="CS290Spring09"

CSC 290A, Spring 2009: Homework

Line: 85 to 85
 
META TOPICMOVED by="KonstantinosMenychtas" date="1232735891" from="Main.CS290Spring09Hw1ExtensibleDesign" to="Main.CS290Spring09Hw"
META PREFERENCE name="ALLOWTOPICCHANGE" title="ALLOWTOPICCHANGE" type="Set" value="ChenDing, KonstantinosMenychtas, ArrvindhShriraman"
META PREFERENCE name="ALLOWTOPICRENAME" title="ALLOWTOPICRENAME" type="Set" value="ChenDing,KonstantinosMenychtas, ArrvindhShriraman"
Deleted:
<
<
META PREFERENCE name="ALLOWTOPICVIEW" title="ALLOWTOPICVIEW" type="Set" value="ChenDing,KonstantinosMenychtas, ArrvindhShriraman"

Revision 182009-03-30 - KonstantinosMenychtas

Line: 1 to 1
 
META TOPICPARENT name="CS290Spring09"

CSC 290A, Spring 2009: Homework

Line: 85 to 85
 
META TOPICMOVED by="KonstantinosMenychtas" date="1232735891" from="Main.CS290Spring09Hw1ExtensibleDesign" to="Main.CS290Spring09Hw"
META PREFERENCE name="ALLOWTOPICCHANGE" title="ALLOWTOPICCHANGE" type="Set" value="ChenDing, KonstantinosMenychtas, ArrvindhShriraman"
META PREFERENCE name="ALLOWTOPICRENAME" title="ALLOWTOPICRENAME" type="Set" value="ChenDing,KonstantinosMenychtas, ArrvindhShriraman"
Added:
>
>
META PREFERENCE name="ALLOWTOPICVIEW" title="ALLOWTOPICVIEW" type="Set" value="ChenDing,KonstantinosMenychtas, ArrvindhShriraman"

Revision 172009-03-27 - KonstantinosMenychtas

Line: 1 to 1
 
META TOPICPARENT name="CS290Spring09"

CSC 290A, Spring 2009: Homework

Line: 85 to 85
 
META TOPICMOVED by="KonstantinosMenychtas" date="1232735891" from="Main.CS290Spring09Hw1ExtensibleDesign" to="Main.CS290Spring09Hw"
META PREFERENCE name="ALLOWTOPICCHANGE" title="ALLOWTOPICCHANGE" type="Set" value="ChenDing, KonstantinosMenychtas, ArrvindhShriraman"
META PREFERENCE name="ALLOWTOPICRENAME" title="ALLOWTOPICRENAME" type="Set" value="ChenDing,KonstantinosMenychtas, ArrvindhShriraman"
Deleted:
<
<
META PREFERENCE name="ALLOWTOPICVIEW" title="ALLOWTOPICVIEW" type="Set" value="ChenDing,KonstantinosMenychtas, ArrvindhShriraman"

Revision 162009-03-27 - ChenDing

Line: 1 to 1
 
META TOPICPARENT name="CS290Spring09"

CSC 290A, Spring 2009: Homework

Line: 26 to 26
 
  • Public history: allow everyone to see this session's history; users can see messages posted from the beginning of the session even without entering the room.
  • Private history: allow only users who have entered the room / bipartite chat to view all previous messages of the session, and nobody else.
  • No history: the users who enter the room, and only them, have recollection of messages that were posted after they entered the room
Changed:
<
<
When a user walks out of a session, they could be prompted to be sent a transcript to their e-mail address. When the session ends (all users walk out), the server can discard the session history.
>
>
When a user leaves a session, they could be prompted to be sent a transcript to their e-mail address. When the session ends (all users leave), the server can discard the session history.
  Once connected, the server creates the chat page, on which messages are displayed and updated.

Revision 152009-03-27 - KonstantinosMenychtas

Line: 1 to 1
 
META TOPICPARENT name="CS290Spring09"

CSC 290A, Spring 2009: Homework

Line: 23 to 23
 Once logged in, the user moves to the function page, which has choices for the user to connect to another user (bipartite chat) or to create and join a group chat (room). A bipartite chat is possible only if the other user is signed in at the same time. A chat session starts when a bipartite chat or room is established and ends when there are no more users participating in it.

For every room or bipartite chat, message history is maintained throughout the session's lifetime. The user who starts the session (bipartite chat / room) is allowed to enable one of the following choices:

Changed:
<
<
  • Public history: allow everyone to see this session's history; users to see messages from the very beginning of the session even without entering the session.
  • Private history: allow only users who have entered in the room / bipartite chat to view all previous messages of the session, and nobody else.
  • No history: the users who enter the room should only have recollection of messages that were displayed after they entered the room, and nobody else.
>
>
  • Public history: allow everyone to see this session's history; users can see messages posted from the beginning of the session even without entering the room.
  • Private history: allow only users who have entered the room / bipartite chat to view all previous messages of the session, and nobody else.
  • No history: the users who enter the room, and only them, have recollection of messages that were posted after they entered the room
 When a user walks out of a session, they could be prompted to be sent a transcript to their e-mail address. When the session ends (all users walk out), the server can discard the session history.

Once connected, the server creates the chat page, on which messages are displayed and updated.

Revision 142009-03-27 - KonstantinosMenychtas

Line: 1 to 1
 
META TOPICPARENT name="CS290Spring09"

CSC 290A, Spring 2009: Homework

Line: 18 to 18
  In this project, you will work in a group to develop an instant-messaging server. The basic server accepts HTTP requests to establish client accounts and passwords, maintain on-line status, organize pairwise and group communication, and store message history.
Changed:
<
<
The client can be any Internet browser program such as Firefox or IE. Let's say that an interested user learned about your server and its URL through you, a link on some web page, or your advertisement on campus. The functionalities of the server are organized in several basic page views. First, the user comes to the front page of the server, which allows a new user to register and an existing user to log in. You may use clear text to transfer and store user passwords or the encryption support of HTTP.
>
>
The client can be any Internet browser program such as Firefox or IE. Let's say that an interested user learned about your server and its URL through you, a link on some web page, or your advertisement on campus. The functionalities of the server are organized in several basic page views. First, the user comes to the front page of the server, which allows a new user to register and an existing user to log in. You may use clear text to transfer and store user passwords, but we strongly recommend you use the encryption support of HTTP.
 
Changed:
<
<
Once logged in, the user moves to the function page, which has choices for the user to connect to another user or to create and join a group chat. A connection is possible if the other use has signed in at the same time. A user can choose to browse the chat history instead of connecting.
>
>
Once logged in, the user moves to the function page, which has choices for the user to connect to another user (bipartite chat) or to create and join a group chat (room). A bipartite chat is possible only if the other user is signed in at the same time. A chat session starts when a bipartite chat or room is established and ends when there are no more users participating in it.

For every room or bipartite chat, message history is maintained throughout the session's lifetime. The user who starts the session (bipartite chat / room) is allowed to enable one of the following choices:

  • Public history: allow everyone to see this session's history; users to see messages from the very beginning of the session even without entering the session.
  • Private history: allow only users who have entered in the room / bipartite chat to view all previous messages of the session, and nobody else.
  • No history: the users who enter the room should only have recollection of messages that were displayed after they entered the room, and nobody else.
When a user walks out of a session, they could be prompted to be sent a transcript to their e-mail address. When the session ends (all users walk out), the server can discard the session history.
  Once connected, the server creates the chat page, on which messages are displayed and updated.

Revision 132009-03-26 - KonstantinosMenychtas

Line: 1 to 1
 
META TOPICPARENT name="CS290Spring09"

CSC 290A, Spring 2009: Homework

Line: 12 to 12
 
  • Submit your example and solution code through the CS department wiki by creating a new page or a set of new pages. Make them changable by only you and viewable by you, KonstantinosMenychtas, and ChenDing.
  • We have collected a set of easy to follow hints/guidelines on the Wiki-related hints page, including page creation, basic formatting, and access control.
Changed:
<
<

Homework 2: On-line email drop-box. NEW

>
>

Team Project: Instant Messaging Sever for Browser Clients. NEW

Stage 1: Basic server

In this project, you will work in a group to develop an instant-messaging server. The basic server accepts HTTP requests to establish client accounts and passwords, maintain on-line status, organize pairwise and group communication, and store message history.

The client can be any Internet browser program such as Firefox or IE. Let's say that an interested user learned about your server and its URL through you, a link on some web page, or your advertisement on campus. The functionalities of the server are organized in several basic page views. First, the user comes to the front page of the server, which allows a new user to register and an existing user to log in. You may use clear text to transfer and store user passwords or the encryption support of HTTP.

Once logged in, the user moves to the function page, which has choices for the user to connect to another user or to create and join a group chat. A connection is possible if the other use has signed in at the same time. A user can choose to browse the chat history instead of connecting.

Once connected, the server creates the chat page, on which messages are displayed and updated.

For interoperability, your server should use the relevant Jabber message protocol, which is in XML format.

The project is evaluated at the weekly report for 15 min per team each Tuesday during class. The report has two parts. The first is a slide presentation of the progress in the last week and the plan for the next week. It includes progress made not just in system implementation but equally importantly system design and user demand/feedback analysis. You will use the software development process known as agile development---chiefly rapid prototyping and iterative improvements. The second part of the report is your system, or if the system is not yet developed, a demonstration of some features of your design.

The length of stage 1 is about three weeks starting from Friday March 27 and ending April 14, with three in-class presentations on March 31, April 7, and April 14.

Stage 2: Extensible server

Depending on the available time and the progress and discussion of stage 1, we will extend the design of the basic server to allow a user to add and distribute new functionalities. We will post the design requirements in the next week.

For resources, see class slides and references especially on the following subjects:

  • HTTP/CGI/Web 2.0 programming, class schedule table Feb. 19, 23, and 25.
  • Source-code control through subversion, class schedule table Feb. 12.
  • Useful Ruby libraries such as XML parsing, class schedule Mar. 3.

Homework 2: On-line email drop-box.

  Have you ever found yourself in the uncomfortable situation to have to give your e-mail to people you wouldn't really want to? What if you wrote this short and easy script they could use by visiting your website to mail you instead? All you need to do use Ruby + CGI to handle an HTML form and take care of the e-mail forwarding. Your drop-box can also add keywords to the subject line, which can be used by your mailbox to classify emails based on the drop-box.
Line: 51 to 79
 
META TOPICMOVED by="KonstantinosMenychtas" date="1232735891" from="Main.CS290Spring09Hw1ExtensibleDesign" to="Main.CS290Spring09Hw"
META PREFERENCE name="ALLOWTOPICCHANGE" title="ALLOWTOPICCHANGE" type="Set" value="ChenDing, KonstantinosMenychtas, ArrvindhShriraman"
META PREFERENCE name="ALLOWTOPICRENAME" title="ALLOWTOPICRENAME" type="Set" value="ChenDing,KonstantinosMenychtas, ArrvindhShriraman"
Added:
>
>
META PREFERENCE name="ALLOWTOPICVIEW" title="ALLOWTOPICVIEW" type="Set" value="ChenDing,KonstantinosMenychtas, ArrvindhShriraman"

Revision 122009-02-10 - ChenDing

Line: 1 to 1
 
META TOPICPARENT name="CS290Spring09"

CSC 290A, Spring 2009: Homework

Line: 14 to 14
 

Homework 2: On-line email drop-box. NEW

Changed:
<
<
Have you ever found yourself in the uncomfortable situation to have to give your e-mail to people you wouldn't really want to ? What if you wrote this short and easy script they could use by visiting your website to mail you instead ? All you need to do use Ruby + CGI to handle an HTML form and take care of the e-mail forwarding.
>
>
Have you ever found yourself in the uncomfortable situation to have to give your e-mail to people you wouldn't really want to? What if you wrote this short and easy script they could use by visiting your website to mail you instead? All you need to do use Ruby + CGI to handle an HTML form and take care of the e-mail forwarding. Your drop-box can also add keywords to the subject line, which can be used by your mailbox to classify emails based on the drop-box.
  In this pre-assignment you need to implement that exact form that would serve as an "email drop-box" for your website. Yes, that is a potential source of spam, so as soon as you finish familiarizing yourself with Ruby + CGI ( Common Gateway Interface ), you are free (but not required) to elaborate on the assignment and improve your service (ex. add sessions, or some visual authentication mechanism) , or re-implement the same scenario using another language (ex. PHP + CGI) and contrast.

Revision 112009-02-10 - KonstantinosMenychtas

Line: 1 to 1
 
META TOPICPARENT name="CS290Spring09"

CSC 290A, Spring 2009: Homework

Line: 50 to 50
 Homework 1 is due midnight, Sunday Feb. 1st.

META TOPICMOVED by="KonstantinosMenychtas" date="1232735891" from="Main.CS290Spring09Hw1ExtensibleDesign" to="Main.CS290Spring09Hw"
Deleted:
<
<
META PREFERENCE name="ALLOWTOPICVIEW" title="ALLOWTOPICVIEW" type="Set" value="ChenDing, KonstantinosMenychtas, ArrvindhShriraman"
 
META PREFERENCE name="ALLOWTOPICCHANGE" title="ALLOWTOPICCHANGE" type="Set" value="ChenDing, KonstantinosMenychtas, ArrvindhShriraman"
META PREFERENCE name="ALLOWTOPICRENAME" title="ALLOWTOPICRENAME" type="Set" value="ChenDing,KonstantinosMenychtas, ArrvindhShriraman"

Revision 102009-02-10 - KonstantinosMenychtas

Line: 1 to 1
 
META TOPICPARENT name="CS290Spring09"

CSC 290A, Spring 2009: Homework

Line: 12 to 12
 
  • Submit your example and solution code through the CS department wiki by creating a new page or a set of new pages. Make them changable by only you and viewable by you, KonstantinosMenychtas, and ChenDing.
  • We have collected a set of easy to follow hints/guidelines on the Wiki-related hints page, including page creation, basic formatting, and access control.
Changed:
<
<

Homework 2: Pre-assignment NEW

>
>

Homework 2: On-line email drop-box. NEW

  Have you ever found yourself in the uncomfortable situation to have to give your e-mail to people you wouldn't really want to ? What if you wrote this short and easy script they could use by visiting your website to mail you instead ? All you need to do use Ruby + CGI to handle an HTML form and take care of the e-mail forwarding.
Line: 21 to 21
 How to start:
  • Login to your betaweb account.
  • Visit /var/www/html/cs290 and create your own directory, using your login name. That is where you will place your scripts.
Changed:
<
<
  • Your scripts need to be readable and executable by others
>
>
  • To be a web service, your script has to be readable and executable by everyone. However, we request that students do not look at each other's script until the deadline passes.
 
  • Your scripts need to have a .cgi suffix.

Other notes

Changed:
<
<
  • Implement a single script to handle every possible input / context to be displayed (both form and "sent confirmation")
>
>
  • Implement a single script to handle every possible input / context to be displayed (both the form and "sent confirmation")
 
  • Use Ruby 's CGI class
  • Use the Ruby's system to invoke mail (unless you have a better idea)
Changed:
<
<
  • Remember you can access the get/post html form data through the params hash of the cgi object
>
>
  • Remember you can access the get/post of the form data through the params hash of the cgi object
 
Deleted:
<
<
  • Don't get carried away by the simplicity of Ruby, bother to look up the syntactic sugar if you find yourself struggling for longer than you should with trivial stuff such as retrieving variable values.
 
Changed:
<
<
This pre-assignment is meant as a warm-up for the more feature-rich Homework 2.
>
>
This assignment is meant as a warm-up for the more feature-rich Homework 3.
  Homework 2 pre-assignment is due midnight, Sunday Feb. 15th.
Line: 51 to 50
 Homework 1 is due midnight, Sunday Feb. 1st.

META TOPICMOVED by="KonstantinosMenychtas" date="1232735891" from="Main.CS290Spring09Hw1ExtensibleDesign" to="Main.CS290Spring09Hw"
Added:
>
>
META PREFERENCE name="ALLOWTOPICVIEW" title="ALLOWTOPICVIEW" type="Set" value="ChenDing, KonstantinosMenychtas, ArrvindhShriraman"
 
META PREFERENCE name="ALLOWTOPICCHANGE" title="ALLOWTOPICCHANGE" type="Set" value="ChenDing, KonstantinosMenychtas, ArrvindhShriraman"
META PREFERENCE name="ALLOWTOPICRENAME" title="ALLOWTOPICRENAME" type="Set" value="ChenDing,KonstantinosMenychtas, ArrvindhShriraman"

Revision 92009-02-10 - KonstantinosMenychtas

Line: 1 to 1
 
META TOPICPARENT name="CS290Spring09"

CSC 290A, Spring 2009: Homework

Line: 12 to 12
 
  • Submit your example and solution code through the CS department wiki by creating a new page or a set of new pages. Make them changable by only you and viewable by you, KonstantinosMenychtas, and ChenDing.
  • We have collected a set of easy to follow hints/guidelines on the Wiki-related hints page, including page creation, basic formatting, and access control.
Changed:
<
<

Homework 1: Extensible Design NEW

>
>

Homework 2: Pre-assignment NEW

Have you ever found yourself in the uncomfortable situation to have to give your e-mail to people you wouldn't really want to ? What if you wrote this short and easy script they could use by visiting your website to mail you instead ? All you need to do use Ruby + CGI to handle an HTML form and take care of the e-mail forwarding.

In this pre-assignment you need to implement that exact form that would serve as an "email drop-box" for your website. Yes, that is a potential source of spam, so as soon as you finish familiarizing yourself with Ruby + CGI ( Common Gateway Interface ), you are free (but not required) to elaborate on the assignment and improve your service (ex. add sessions, or some visual authentication mechanism) , or re-implement the same scenario using another language (ex. PHP + CGI) and contrast.

How to start:

  • Login to your betaweb account.
  • Visit /var/www/html/cs290 and create your own directory, using your login name. That is where you will place your scripts.
  • Your scripts need to be readable and executable by others
  • Your scripts need to have a .cgi suffix.

Other notes

  • Implement a single script to handle every possible input / context to be displayed (both form and "sent confirmation")
  • Use Ruby 's CGI class
  • Use the Ruby's system to invoke mail (unless you have a better idea)
  • Remember you can access the get/post html form data through the params hash of the cgi object
  • See The Ruby Way, Chapter 19 for a first set of hints. And then, the web !
  • Don't get carried away by the simplicity of Ruby, bother to look up the syntactic sugar if you find yourself struggling for longer than you should with trivial stuff such as retrieving variable values.

This pre-assignment is meant as a warm-up for the more feature-rich Homework 2.

Homework 2 pre-assignment is due midnight, Sunday Feb. 15th.

Homework 1: Extensible Design

  A common software problem is to develop a set of tools operating on a collection of data. The goal of extensible design is to structure the system so that new tools and new data types can be added without changing the code for existing tools and data types.

Revision 82009-02-09 - KonstantinosMenychtas

Line: 1 to 1
 
META TOPICPARENT name="CS290Spring09"

CSC 290A, Spring 2009: Homework

Line: 26 to 26
 Homework 1 is due midnight, Sunday Feb. 1st.

META TOPICMOVED by="KonstantinosMenychtas" date="1232735891" from="Main.CS290Spring09Hw1ExtensibleDesign" to="Main.CS290Spring09Hw"
Changed:
<
<
META PREFERENCE name="ALLOWTOPICCHANGE" title="ALLOWTOPICCHANGE" type="Set" value="ChenDing, KonstantinosMenychtas"
META PREFERENCE name="ALLOWTOPICRENAME" title="ALLOWTOPICRENAME" type="Set" value="ChenDing,KonstantinosMenychtas"
>
>
META PREFERENCE name="ALLOWTOPICCHANGE" title="ALLOWTOPICCHANGE" type="Set" value="ChenDing, KonstantinosMenychtas, ArrvindhShriraman"
META PREFERENCE name="ALLOWTOPICRENAME" title="ALLOWTOPICRENAME" type="Set" value="ChenDing,KonstantinosMenychtas, ArrvindhShriraman"

Revision 72009-01-25 - KonstantinosMenychtas

Line: 1 to 1
 
META TOPICPARENT name="CS290Spring09"

CSC 290A, Spring 2009: Homework

Line: 27 to 27
 
META TOPICMOVED by="KonstantinosMenychtas" date="1232735891" from="Main.CS290Spring09Hw1ExtensibleDesign" to="Main.CS290Spring09Hw"
META PREFERENCE name="ALLOWTOPICCHANGE" title="ALLOWTOPICCHANGE" type="Set" value="ChenDing, KonstantinosMenychtas"
Deleted:
<
<
META PREFERENCE name="ALLOWTOPICVIEW" title="ALLOWTOPICVIEW" type="Set" value="ChenDing,KonstantinosMenychtas"
 
META PREFERENCE name="ALLOWTOPICRENAME" title="ALLOWTOPICRENAME" type="Set" value="ChenDing,KonstantinosMenychtas"

Revision 62009-01-24 - ChenDing

Line: 1 to 1
 
META TOPICPARENT name="CS290Spring09"

CSC 290A, Spring 2009: Homework

Line: 9 to 9
 

Rules

Changed:
<
<
  • Submit your example and solution code through the CS department wiki by creating a new page.
  • Your solution page should be changable by only you and viewable by you, KonstantinosMenychtas, and ChenDing.
  • A few hints/guidelines that you should follow, can be found in the Wiki-related hints page.
>
>
  • Submit your example and solution code through the CS department wiki by creating a new page or a set of new pages. Make them changable by only you and viewable by you, KonstantinosMenychtas, and ChenDing.
  • We have collected a set of easy to follow hints/guidelines on the Wiki-related hints page, including page creation, basic formatting, and access control.
 
Changed:
<
<

Homework 1: Extensible Design NEW

>
>

Homework 1: Extensible Design NEW

  A common software problem is to develop a set of tools operating on a collection of data. The goal of extensible design is to structure the system so that new tools and new data types can be added without changing the code for existing tools and data types.

In this assignment, you are asked to come up with an example programming problem and demonstrate an extensible design on the example problem. The specific requirements are

  • the problem should involve data with recursive data types
  • the existing solution should have at least one data type and one tool
Changed:
<
<
  • the addition should include at least one new data type and one new tool
>
>
  • the extension should include at least one new data type and one new tool
 
Changed:
<
<
The design will be evaluated not only in terms of correctness but also the brevity and clarity of your program. You are encouraged to use this exercise as a way to evaluate the object-oriented features of your favorite languages and maybe discover a better alternative.
>
>
The design will be evaluated not only in terms of correctness but also the brevity and clarity of your program. You are encouraged to use this exercise as a way to evaluate the object-oriented features of your favorite programming language and compare it with newer alternatives especially the one we discussed in class, Ruby.
 
Added:
>
>
Homework 1 is due midnight, Sunday Feb. 1st.
 
META TOPICMOVED by="KonstantinosMenychtas" date="1232735891" from="Main.CS290Spring09Hw1ExtensibleDesign" to="Main.CS290Spring09Hw"
META PREFERENCE name="ALLOWTOPICCHANGE" title="ALLOWTOPICCHANGE" type="Set" value="ChenDing, KonstantinosMenychtas"

Revision 52009-01-23 - KonstantinosMenychtas

Line: 1 to 1
 
META TOPICPARENT name="CS290Spring09"

CSC 290A, Spring 2009: Homework

Line: 9 to 9
 

Rules

Changed:
<
<
Submit your example and solution code through the CS department wiki by creating a page and make it changable by only you and viewable by you, KonstantinosMenychtas, and ChenDing. To do so, and to format your answer in the TWiki format we follow, we list a few hints that can be very useful in the following page.
>
>
  • Submit your example and solution code through the CS department wiki by creating a new page.
  • Your solution page should be changable by only you and viewable by you, KonstantinosMenychtas, and ChenDing.
  • A few hints/guidelines that you should follow, can be found in the Wiki-related hints page.
 

Homework 1: Extensible Design NEW

Revision 42009-01-23 - KonstantinosMenychtas

Line: 1 to 1
Changed:
<
<
META TOPICPARENT name="CS290InProgress"

Homework 1: Extensible Design

>
>
META TOPICPARENT name="CS290Spring09"

CSC 290A, Spring 2009: Homework

 
Changed:
<
<
CS290A Spring 2009
>
>
The following page lists the homework, written or programming assignments, for the Spring 2009 class. The homework is listed by due-date order : newest should be on top.

Rules

Submit your example and solution code through the CS department wiki by creating a page and make it changable by only you and viewable by you, KonstantinosMenychtas, and ChenDing. To do so, and to format your answer in the TWiki format we follow, we list a few hints that can be very useful in the following page.

Homework 1: Extensible Design NEW

  A common software problem is to develop a set of tools operating on a collection of data. The goal of extensible design is to structure the system so that new tools and new data types can be added without changing the code for existing tools and data types.
Line: 13 to 22
  The design will be evaluated not only in terms of correctness but also the brevity and clarity of your program. You are encouraged to use this exercise as a way to evaluate the object-oriented features of your favorite languages and maybe discover a better alternative.
Deleted:
<
<
Submit your example and solution code through the CS department wiki by creating a page and make it changable by only you and viewable by you, (Kostas, your wiki id here), and ChenDing. You can make the page public after the assignment is due.
 
Changed:
<
<
To format your answer, you can use wiki editting short-cuts, html, or an pdf file upload. Here are some useful resources:
  • WelcomeGuest for simple instructions on wiki page creation and formatting
  • Kostas, your c-2-html can be given here.
  • A example page with the read/write protection setup (Kostas, please make an example page or just give the Set commands.
>
>
META TOPICMOVED by="KonstantinosMenychtas" date="1232735891" from="Main.CS290Spring09Hw1ExtensibleDesign" to="Main.CS290Spring09Hw"
 
META PREFERENCE name="ALLOWTOPICCHANGE" title="ALLOWTOPICCHANGE" type="Set" value="ChenDing, KonstantinosMenychtas"
META PREFERENCE name="ALLOWTOPICVIEW" title="ALLOWTOPICVIEW" type="Set" value="ChenDing,KonstantinosMenychtas"
META PREFERENCE name="ALLOWTOPICRENAME" title="ALLOWTOPICRENAME" type="Set" value="ChenDing,KonstantinosMenychtas"

Revision 32009-01-23 - KonstantinosMenychtas

Line: 1 to 1
 
META TOPICPARENT name="CS290InProgress"

Homework 1: Extensible Design

Line: 20 to 20
 
  • Kostas, your c-2-html can be given here.
  • A example page with the read/write protection setup (Kostas, please make an example page or just give the Set commands.
META PREFERENCE name="ALLOWTOPICCHANGE" title="ALLOWTOPICCHANGE" type="Set" value="ChenDing, KonstantinosMenychtas"
Added:
>
>
META PREFERENCE name="ALLOWTOPICVIEW" title="ALLOWTOPICVIEW" type="Set" value="ChenDing,KonstantinosMenychtas"
META PREFERENCE name="ALLOWTOPICRENAME" title="ALLOWTOPICRENAME" type="Set" value="ChenDing,KonstantinosMenychtas"

Revision 22009-01-23 - KonstantinosMenychtas

Line: 1 to 1
 
META TOPICPARENT name="CS290InProgress"

Homework 1: Extensible Design

Line: 19 to 19
 
  • WelcomeGuest for simple instructions on wiki page creation and formatting
  • Kostas, your c-2-html can be given here.
  • A example page with the read/write protection setup (Kostas, please make an example page or just give the Set commands.
Added:
>
>
META PREFERENCE name="ALLOWTOPICCHANGE" title="ALLOWTOPICCHANGE" type="Set" value="ChenDing, KonstantinosMenychtas"

Revision 12009-01-23 - ChenDing

Line: 1 to 1
Added:
>
>
META TOPICPARENT name="CS290InProgress"

Homework 1: Extensible Design

CS290A Spring 2009

A common software problem is to develop a set of tools operating on a collection of data. The goal of extensible design is to structure the system so that new tools and new data types can be added without changing the code for existing tools and data types.

In this assignment, you are asked to come up with an example programming problem and demonstrate an extensible design on the example problem. The specific requirements are

  • the problem should involve data with recursive data types
  • the existing solution should have at least one data type and one tool
  • the addition should include at least one new data type and one new tool

The design will be evaluated not only in terms of correctness but also the brevity and clarity of your program. You are encouraged to use this exercise as a way to evaluate the object-oriented features of your favorite languages and maybe discover a better alternative.

Submit your example and solution code through the CS department wiki by creating a page and make it changable by only you and viewable by you, (Kostas, your wiki id here), and ChenDing. You can make the page public after the assignment is due.

To format your answer, you can use wiki editting short-cuts, html, or an pdf file upload. Here are some useful resources:

  • WelcomeGuest for simple instructions on wiki page creation and formatting
  • Kostas, your c-2-html can be given here.
  • A example page with the read/write protection setup (Kostas, please make an example page or just give the Set commands.
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding URCS? Send feedback