Category:I703 Python
General
The Python Course is 4 ECTS
Lecturer: Lauri Võsandi
E-mail: lauri [donut] vosandi [plus] i703 [ät] gmail [dotchka] com
General
The Python Course is 4 ECTS
- This is not a course for slacking off
- I expect you to understand by now:
- OOP concepts: loops, functions, classes etc
- Networking fundamentals: UDP/TCP ports, logical/hardware address, hostname, domain
- Get along on the command line: cp, mv, mkdir, cd, ssh user@host, scp file user@host:
- Possible scenarios:
- Scratch your own itch, the most preferred option, should keep you motivated and happy
- Create a local UI or agent for your PHP project's API
- Find an (open-source mainly Python-based) project you want to help and prepare to participate on Google Summer of Code
- Prepare scenario with some scripts for Cyberolympics competition
- Pick something below and hope Lauri gets you a keg of beer
- Progress visible in Git from day one
- (Learn how to) use Google, I am not your tech support
- Of course I am there if you're stuck with some corner case or have issues understanding some concepts :)
- When asking for help please try to form properly phrased questions
- Help each other, socialize, have a beer event and ask me to join as well ;)
Lectures/workshops, 8 of them tops following these you should be able to write
a Python script that can parse input of different kind,
process them and output something with added value (blog, reports, etc):
- Hello world with Python, setting up Git repo
- Working with text files, CSV, messing around with Unicode
- Working with JSON, XML, Markdown files
- Using matplotlib and charting data in general
- Using numpy and scipy
- Interacting with databases
- Building networked applications
- Threads and event loops, running apps under uwsgi, using server-side events
- Regular expressions
- Working with Falcon API framework
- Working with Django web framework, ORM and templating engines
- Network application security
Pythonize robots
Current football robot software stack is written in C++ using Qt framework. With proper layering we could move it to Python while still keeping performance-sensitive stuff in C/C++ libraries such as OpenCV. This way we could more easily get newbies involved in the actual game strategy programming.
At first glance the new engine could:
- hardcore: engine based on event loop (epoll)
- hardcore: use OpenCV Python bindings for image recognition
- hardcore: support loading Python scripts from files to be used for game logic
- hardcore: support streaming MJPEG to the web browser for debugging
- hardcore: support overlay of interesting scene objects in the browser
- hardcore: support websockets to interact with a web browser
- überhardcore: explore PyCUDA if that sounds like a viable approach
- überhardcore: explore machine learning for certain aspects
Some of these things are of course far fetched. We can simply start with an event loop that forwards frames to a web browser and then step by step improve that. In reality it would be good enough to have something by the end of the semester that could be reused for next Robotex.
Butterknife
Butterknife is a tool for deploying Linux-based desktop OS on bare metal. It's pretty much usable, but could use some refactoring and extra features.
- easy: Add Travis CI tests
- easy: Add unittests
- easy: Add automatable nightly builds for templates
- easy: Add init subcommand for setting up Butterknife server
- easy: Set up Butterknife server for robot firmware(s)
- medium: Fix push/pull
- hardcore: Online incremental upgrades and tray icon
- hardcore: Dockerize Butterknife server
Hardcore tasks are for those who *really* want to understand how a Linux-based OS is put together. Every decent hacker has a distribution named after him/her right? ;)
Certidude
Certidude is a tool for managing (VPN) certificates and setting up services (StrongSwan, OpenVPN, Puppet?) to use those certificates. There's a lot room for experimentation and learning how different software/hardware components and technologies work together.
- easy: Fix nchan support
- easy: Fix Travis CI
- easy: Add command-line features
- easy: Add OpenVPN support, goes hand-in-hand with Windows packaging
- easy: Add Puppet support, goes hand-in-hand with autosign for domain computers below
- easy: Add minimal user interface with GTK or Qt bindings
- medium: Certificate signing request retrieval from IMAP mailbox
- medium: Certificate issue via SMTP, goes hand-in-hand with previous task
- medium: Certificate renewal
- medium: Add unittests
- medium: LDAP querying for admin group membership
- medium: Autosign for domain computers (=Kerberos authentication)
- medium: Refactor tagging (?)
- hardcore: Add (service+UI) packaging for Windows as MSI
- hardcore: Dockerize Certidude server
The topics discussed in this project have significant overlap with authentication/authorization and firewalls/VPN-s electives next year, so doing this kind of stuff already now makes it easier to comprehend next year ;)
Active Directory web interface
Some stuff was written for managing users in OpenLDAP database in 2014. It should be of reasonable effort to patch the code to work with MS Active Directory and Samba4. Samba python scripts can be used to talk to the domain controller. Some code for adding users by Estonian ID-code is already there. Should be doable by capable student or two.
- easy: Add Travis CI
- medium: Port to AD/Samba4
- medium: Add group management
- medium: Add Kerberos support for authenticating users
- medium: Check membership of domain admins group via LDAP
- hardcore: Check delegation instead of group membership
- hardcore: Dockerize Samba4 + web interface
The topics discussed in this project have significant overlap with authentication/authorization elective next year, so doing this kind of stuff already now makes it easier to comprehend next year ;)
This category currently contains no pages or media.