Suggesion for an undergrad final year project in Python

S

Sridhar

Hi,

I am doing my undergrade CS course. I am in the final year, and would
like to do my project involving Python. Our instructors require the
project to have novel ideas. Can the c.l.p people shed light on this
topic?
 
D

David Fraser

Sridhar said:
Hi,

I am doing my undergrade CS course. I am in the final year, and would
like to do my project involving Python. Our instructors require the
project to have novel ideas. Can the c.l.p people shed light on this
topic?
You could write a Python program that writes novels.
 
K

Kartic

Sridhar said the following on 2/1/2005 2:11 AM:
Hi,

I am doing my undergrade CS course. I am in the final year, and would
like to do my project involving Python. Our instructors require the
project to have novel ideas. Can the c.l.p people shed light on this
topic?

You try and implement some CS concepts you have learnt using Python. For
example, if you had a course on parsing and compiler design, try to
implement a simple language in Python.

Or if you like Computer Graphics, see if you can implement things like
Phong shading and things in that field. This may not be novel like your
professors want. But you can make it novel by allowing the user to
rotate the object and show how the shadow and shading get transformed.

Or if you are the networking types, come up with a peer-to-peer chat
application with whitetboard capability, which I am sure will be fairly
novel.

Look within for answers :)

That way you will reinforce your theory and learn Python as well.

Thanks,
--Kartic
 
P

Paul Robson

Sridhar said the following on 2/1/2005 2:11 AM:

You try and implement some CS concepts you have learnt using Python. For
example, if you had a course on parsing and compiler design, try to
implement a simple language in Python.

Could I suggest going for an area that particularly interests you ; rather
than saying "what sort of project ...." come up with an area of interest -
this'll mean you probably have more knowledge and will put in more
effort - and then ask for ideas - ideally about something that is missing.
 
J

Jorgen Grahn

Hi,

I am doing my undergrade CS course. I am in the final year, and would
like to do my project involving Python. Our instructors require the
project to have novel ideas. Can the c.l.p people shed light on this
topic?

Seems to me you should find this novel idea and /then/ find the tools to
implement it. Hopefully Python would be one such good tool.

I don't have novel ideas anymore, so I can't help ...

The type interference engine for Python they talk about in some other
threads here would be a cool and useful, and "hard CS", project, but I
suspect it's too big a task. And it has been done for SML and other
languages so I don't know if it's strictly "novel".

/Jorgen
 
L

Lucas Raab

Paul said:
Could I suggest going for an area that particularly interests you ; rather
than saying "what sort of project ...." come up with an area of interest -
this'll mean you probably have more knowledge and will put in more
effort - and then ask for ideas - ideally about something that is missing.

Exactly. If you have an interest in mathematics, then look into
Numarray. Graphics: Panda3d, Blender, pygame... The list goes on. Feel
free to append.
 
G

Guest

How about a tool that can compute the intersection/union/disjunction of
boolean expressions, and return the result as a boolean expression?
This is something I've had on my plate for awhile, but haven't been
able to get around to doing.

As a simple example, assume we have the following expressions:

e1 = (y)
e2 = ((not x) and (not y)) or ((not x) and (y) and (z))

The union of these two would be ((not x) or (y)). The simplest
representation of the result would be best.


To make it harder consider the following additional requirements:

1) Instead of just boolean variables, allow variables with more than
two discrete values (i.e., True and False). For example, if a variable
x can represent the values 1, 2, and 3, then an expression could test
for x!=3, or x>1, or even x in [1,3].

2) Use Python's native data structures to represent expressions. Using
the example above, we might have something like this:

e1 = [{'y':True}]
e2 = [{'x':False, 'y':False}, {'x':False, 'y':True, 'z':True}]

How you might extend this to non-boolean expressions would be up to
you.

3) Make it fast, and scalable to many variables (up to at least 50). I
haven't studied this extensively, but I believe a Quine-McKlusky method
is order n^2 with n being the number of variables, so this will quickly
blow up as the number of variables increases.

4) As my example in (2) suggested, make variable names strings. This
allows arbitrary names. For non-boolean discrete variables, allow any
arbitrary list of numbers or strings as elements.

5) Since a side-effect of the program will (probably) be the ability to
reduce expressions to their simplest representation, make this
capability a part of the public API, since that's a useful function in
itself.
 
A

alexrait1

How about writing some gtk fronted to pgp.. That might be both useful
(at least for me) and teach you about pgp and pyGTK, that is writing
gui with python.
 
T

Terry Reedy

Sridhar said:
Hi,

I am doing my undergrade CS course. I am in the final year, and would
like to do my project involving Python. Our instructors require the
project to have novel ideas. Can the c.l.p people shed light on this
topic?

Some months ago, maybe a year ago, Brett Cannon asked on the Py-Dev mailing
list a similar question about a CS master's thesis. He got around 10
sensible suggestions. Perhaps a few could be scaled down to a senior
thesis level. In any case, you could check the archives at www.python.com
of the pydev summaries that he prepares every two weeks ago.

Terry J. Reedy
 
A

Alan Kennedy

[Sridhar]
I am doing my undergrade CS course. I am in the final year, and would
like to do my project involving Python. Our instructors require the
project to have novel ideas. Can the c.l.p people shed light on this
topic?

PyPy is chock full of novel ideas, given that two of the main developers
are Armin Rigo (of psyco fame) and Christian Tismer (stackless python).

PyPy is a project, which has obtained European funding, to reimplement
python *in python*, a very laudable goal.

http://codespeak.net/pypy/

Psyco is a "specialising compiler" for cpython, which essentially does
something like just-in-time compilation, but with a different slant.

http://psyco.sourceforge.net/introduction.html

Armin's paper on the techniques used should make an interesting read for
your CS professors:

http://psyco.sourceforge.net/theory_psyco.pdf

Stackless python has support for full coroutines, as opposed to
cpython's current support for semi-coroutines. In the past, Stackless
used to support continuations, but no longer does because of the
complexity of adapting the cpython interpreter to support them. But
Christian's implementation experience will hopefully guide PyPy in the
direction of supporting both coroutines and continuations.

http://www.stackless.com/

As for what you could do in the PyPy project, I have no suggestions
since I am not involved in the project. But I am sure that a message to
pypy-dev will elicit plenty of ideas.

http://codespeak.net/mailman/listinfo/pypy-dev

Lastly, the jython project is undergoing a bit of renaissance at the
moment, and there's plenty of work to be done. A message to jython-dev
volunteering time is unlikely to go unnoticed. Particularly, the parser,
code generation and AST are areas which require a fair amount of rework.
But there is less opportunity to use "novel ideas" in jython, so it may
not interest your professors, unless you have some novel ideas of your
own to bring to the project.

http://lists.sourceforge.net/lists/listinfo/jython-dev

How much time, over how long a period, do you have available for your
project?

Best of luck,
 
J

JanC

Kartic schreef:
Or if you are the networking types, come up with a peer-to-peer chat
application with whitetboard capability, which I am sure will be fairly
novel.

Hm, a Python version of The Coccinella? :)
 
M

Martin Christensen

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Sridhar> I am doing my undergrade CS course. I am in the final year,
Sridhar> and would like to do my project involving Python. Our
Sridhar> instructors require the project to have novel ideas. Can the
Sridhar> c.l.p people shed light on this topic?

I'm arriving a bit late in this discussion, but might as well throw in
my bit anyway.

I did my master's thesis implementation thingy in Python, and still
managed, from what I can tell from available research material, to
make the fastest RDBMS search engine of its kind. :)

But really, implementation language is, or should be, a fairly minor
issue compared to what exactly it is that you want to do. For some
things, your choice of language might be very important, but until you
know what you're going to do, there's really very little need to worry
about it, at least in my opinion.

Martin

- --
Homepage: http://www.cs.auc.dk/~factotum/
GPG public key: http://www.cs.auc.dk/~factotum/gpgkey.txt
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)
Comment: Using Mailcrypt+GnuPG <http://www.gnupg.org>

iEYEARECAAYFAkIPhtoACgkQYu1fMmOQldVWRACgxSDK80tc5iSFrqnHdi/Ydwg9
qmwAoOk4wiQ9LNUhteuTtbZrrzo6CJfh
=yO5X
-----END PGP SIGNATURE-----
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,763
Messages
2,569,562
Members
45,039
Latest member
CasimiraVa

Latest Threads

Top