Hi,
In this posting:
http://twistedmatrix.com/pipermail/twisted-python/2012-November/026324.html
I mentioned that Professor. Douglas C. Schmidt is teaching a Coursera
course:
"Pattern-Oriented Software Architectures for Concurrent and Networked
Software"
This course is going on right now:
https://www.coursera.org/course/posa
There are a lot of very good video lectures in this course.
There are also several programming assignments.
Students are allowed to implement the programming assignments in whatever
language they want. People are submitting assignments
in Java, C++, Python, Ruby, Scala.
For the students who wish to program in Python, I have been
pushing students to look at Twisted on the course discussion board.
I have also asked Prof. Schmidt to take assignment 3 for the course,
and add special wording for Twisted. The assignment 3 targeted
at Twisted is here:
https://class.coursera.org/posa-001/human_grading/view/courses/970268/assessments/35/submissions
If there are some people in the Twisted community with some free time
who can help, can you please join the course
(it is free) and provide feedback on the wording of the assignment?
It would help to correct any mistakes, and point people to the correct
sections of the Twisted documentation.
Since you need to join the class to see the wording of the assignment,
I am attaching it here.
This is a good opportunity to promote Twisted to new students who want
to use Python, but also learn how to implement network design patterns
Thanks.
--
Craig
The purpose of this assignment is to deepen your understanding of the Wrapper
Facade pattern, the Reactor pattern and the (Acceptor role of the)
Acceptor-Connector pattern in the context of the Python twisted reactor
framework. In particular, you will write a platform-independent reactive server
program that accepts a connection from a client and echoes back what the client
sent.
The reactive server program should do the following activities:
Create an EchoServerHandler class that derives from
twisted.internet.protocol.Protocol and implement its dataReceived() hook method
so that it echoes back the client's input a "line" at a time (i.e., until the
symbols "\n" (or "\r\n"), rather than a character at a time.
Create an EchoServerFactory class that derives from
twisted.internet.protocol.ServerFactory and implement its buildProtocol() hook
method so that it returns a EchoServerHandler.
Create a twisted.internet.reactor that registers a EchoServerFactory when a
connection on the TCP port of your choice is received [listenTCP] and start
that reactor.
For this assignment, you can simply exit the server process when you're
done, which will close down all the open sockets.
Make sure your solution clearly indicates which classes play which roles in the
Wrapper Facade, Reactor, and/or Acceptor-Connector patterns.
This server program should be implemented in Python 2.6 or newer, utilizing the
twisted reactor framework, and include at least one file (name it like
server.txt so uploading is accepted on Coursera!) for your server which is the
basis for the evaluation. An evaluator should be able to run your program with
a command such as 'python server.txt' and your program should successfully run!
A second client.txt file may optionally be included for a simple console client
if you write one during your solution development as a test program and wish to
include it for the convenience of evaluators, but it is not required and will
not be assessed as part of this exercise, just used as a test driver for your
server. You can also use a telnet client (such as putty) as a test driver for
your server.
Twisted classes of note:
Reactor (IReactorTcp):
http://twistedmatrix.com/documents/13.0.0/api/twisted.internet.interfaces.IReactorTCP.html
ServerFactory:
http://twistedmatrix.com/documents/13.0.0/api/twisted.internet.protocol.ServerFactory.html
Protocol:
http://twistedmatrix.com/documents/13.0.0/api/twisted.internet.protocol.Protocol.html
Please add Python version you used into a comment in source code
Rubric
30 possible points
5 points code is well-structured and design makes sense
15 points Wrapper Facade, Reactor, and Acceptor-Connector patterns are
used correctly (and the classes in the solution are clearly mapped to the
appropriate roles in the patterns)
5 points code demonstrates the appropriate level of readability for
others to understand the intent and execution of the program
5 points code compiles and runs smoothly
_______________________________________________
Twisted-Python mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python