Skip to content

Instantly share code, notes, and snippets.

@oyeb
Last active March 20, 2017 06:03
Show Gist options
  • Save oyeb/83bacbd4d58efb1cc92ed1ecb1c9cbab to your computer and use it in GitHub Desktop.
Save oyeb/83bacbd4d58efb1cc92ed1ecb1c9cbab to your computer and use it in GitHub Desktop.
Project ideas

Potential tknow projects

IMO, each of the following projects provide broad coverage of skills, from good Software Engg. to implementation difficulty. Most of them have something to do with servers, services and websites, but in varying degrees. Some of the projects have much to do with AMuDA Lab, just because I know of some requirements there :)

I wish to share foss.amritanet.edu with everyone who needs it, but that requires configuration which is beyond my skill level.

(Vacant) Posts

  • Manager aka God
    • Maintain tknow blog and curate articles/links from everywhere.
    • Connect alumni and current students. Monitor all projects.
    • Incubate new students into projects.
    • Look for new projects.
    • Plan induction?
  • Editor
  • Editor
    • Need that many editors
  • Multimedia
    • Posters, and graphics and web design for foss.amritanet.edu
  • Angular2 Developers
  • Full Stack web developers (Node, Angular2, python, Apache/NGINX)
  • sysadmin
    • Maintain and upgrade services on foss.amritanet.edu
    • Work with Anokha's web team
    • Help set up all projects that need a web server.
    • Fix and maintain DBs on server (phpmyadmin is currently broken!)
  • PR
    • Shantham Bhuraria has been umm... elected?

Current Resources

  • Web Server w/ root access on intranet (foss.amritanet.edu)
    • Need ICTS to get this connected to public internet. (Need sysadmin)
  • Web Server w/ unknown access level on intranet and public internet (anokha.amrita.edu)

1. Attendance Scanners

Use a RaspberryPi 3 Model B and a barcode scanner to build a attendance logger for AMuDA Lab

  • Can optionally be extended for more generic use.
  • Needs web interface (and possibly connect to AUMS - potentially collaborate with ICTS/AUMS API
  • {Purely Optional - grind work}
    • Implement e-journal to track which lab items have been borrowed by who and for what. Currently this is done in a hard-bound register by hand.

2. Alumni Connect w/ tknow or CSE or AMuDA

Need a forum to communicate with alumni and request for funding/resources, guidance and even mentorship. This could be "institutionalised" later (AMuDA is working on a public page listing/tracking all projects)

  • Alumni are willing to fund internal/personal projects, in the form of real 💰💰💰 or in kind, by paying for a costly Amazon EC2 compute instances for example.
    • Amazon's GPU instances would greatly help in ML projects of students here.
  • More than funding, they'd like to mentor. For that they'll require access to Amrita's internal machines.
    • Need to work with ICTS/set up FRP, if our machine(s) are not on public internet.
  • Will help in transfering ownership of projects from seniors to juniors.
  • This requires a forum, a news page to track and publicise projects and ofcourse, an editor.

3. Security and logging on foss

How do you set up an adequately protected shared server?

  • Protect noobs from other noobs (docker? LXD?)
    • Sub project Discuss/implement LXD vs Docker for foss's use case.
  • Make sysadmin's operations transparent to some trusted people.

4. Properly configure NGINX/Apache on foss

Need to figure out the best way to share web hosting in a safe manner across multiple implementation platforms and possibly even docker instances.

  • How would URLS look like? Which base web server to use?
  • Document best practices for clients who need a web page in language XXX.
    • Possibly automate the configuration.
  • Assets must be served in compressed format.
  • Configure (local) reverse proxies, and provide one-click config script that can be copied on a remote server, to proxy via that remote (to make life of remote sysadmin easy)
  • php, node, python, ruby, wordpress etc must coexist in perfect harmony.
    • Along with MySQL, mongo and what not.
  • To start, one needs to read up how Digital Ocean/Amazon/PythonAnywhere do this kind of thing.

5. Implement DOM Judge on foss

It is a shame CSE doesn't have an implementation yet! There's no need to explain its importance and need.

  • Can be used to auto grade programming assignments and even Labs.
    • This can potentially improve Lab quality (if adopted), and we all know how pathetic the current labs are.
  • Possibly integrate with AUMS API/InPods.
  • Possibly charge the department a nominal fee for these services. Proceeds go to devs/tknow projects!
  • Implement variants of DOM Judge, for special contests:
    • Debugging @ Anokha 2017
    • For Databases lab, CLE lab, other labs
    • CUDA and other GPU programs (user submits CUDA program, Judge evals result)
  • Needs leader/score board
  • Needs major web admin interface. This is very very big. Lots of sockets and async multiprocess/thread computation involved.
    • Can also involve load balancing etc.
  • Use anti-plagiarism tools (need ref here) to detect similar submissions and flag them for manual inspection.
  • SECURE COMPUTATION via containers(Docker)/seccomp/chroot.

6. PrettyCompile

This can be used by C programming Lab. The aim is to wrap GCC and to modify it's output, making it more beginner-friendly (consider people who lack enough English skill or have never used TurboC++). Optional enhancements listed below. Please work with Prof. C. Shanmuga Velayutham on this (mentor C programming course). He's highly motivated in improving this course.

  • Must show the user what gcc command was invoked (which compilation flags were used, for example)
  • The tool is CLI only, use colors!
    • Depending on the kind of inspection required, you might have to write a small library and make certain utilities available to students via some header file(s).
    • Need to learn GNU build tools (aka make) for this.
  • Make it easier to use tools like gdb and valgrind by making suitable wrappers for runtime inspection.
  • Curate C programs that are bugged (memory or other bugs) to familiarise them with the debug process/tools (without using any of our wrappers).
  • Here's a mock interaction:
$ pcc try.c                      // this compiles try.c with appropriate compile flags and produces try.o
RUNNING
gcc -Wall try.c -o try.o         // <--- the actual command
--------------------------------
FAILED!
--------------------------------
Line #X foo++;

has never been declared before.

================================
Press 'o' to view original error
Press ...
...
...
Return to exit.

7. Create C/C++/JAVA (python?) Data Structures profiler/grader

This could be a variant of the DOM Judge, curate challenges which accept implementations of common data structures (conforming to the standard interface) and run tests to profile the implementation.

  • Will force students of the course to read and implement the interface.
  • They can easily test correctness of their implementation, which is sometimes tricky.
  • A Competition is obvious.
  • You ask why C? Well, this is why. You better be convinced now.
  • {OPTIONAL but very interesting}
    • Challenges for parallel algorithms and Data structures.
    • Challenges involving massive datasets.
    • Use awesome GNU profiling tools that can tell which lines are bottleneck!

8. Create C/C++/JAVA (python?) Algorithms profiler/grader

Same as above, but for common algorithms.

9. Anokha Management Panel, and App

The Anokha backend is written in node with mongoDB. The Panel is not completely integrated with the backend. The Android App lacks many features. Contact Sachin S Kamath, Shanthosh and Sri Darshan for up-to-date details and requirements.

  • How do we create cross platform mobile apps with the least effort? Which platform to use?
  • How do we make reuseable UI modules for frontend Anokha website?
  • Actual implementation of panel:
    • Make registration desks paperless, remove the need to keep paper backups using a highly available service like Google Sheets (integrate DB CRUD with Sheets?)
    • Improve load time.
    • Redesign payments and handle varied payment options.
    • And many more challenging problems.
@vasanthaganeshk
Copy link

Project six: Beginners with C are going to have to use the internet and stackoverflow to learn about the strange words that gcc spits out. In lab we cannot give students Internet or any documentations. Finding a way around internet is just nuts. BTW Valgrind can be a very useful tool for students.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment