topics for these courses

Issue #11 closed
Piyush P Kurur created an issue

The overall idea of these courses is to get the students accustomed to certain tools that they would use on a day to day basis latter in their life. However, it is a do it kind of course where emphasis is on practical training. The lectures are mostly like an orientation where we introduce the tool leaving it to the student to master the tool.

I have opened this ticket so that people can comment on what topics one wants to do as part of this course. There are two important criteria

  1. The tool should be Open source.
  2. Should be generic and powerful.

Few of the topics that we already plan to cover is

  1. Some scripting particularly shell
  2. One or two scripting languages.
  3. A tool like octave and R for scientific computing.

You can post the suggestions as comments to this ticket. If there are some new tools that you think are interesting and

Comments (13)

  1. Vikas Jain

    Can we learn something about security. How to secure our code from attacks using some defensive programming. Also I think some administration like configuring linux kernel and a webserver are also useful. Or maybe learning emacs or vim text editor commands. I have also read something about composing processes using pilelines. Is it worth learning about it?

  2. Piyush P Kurur reporter

    On Wed, Jan 28, 2015 at 02:37:35PM -0000, Vikas Jain wrote:

    Let me receive some more comments for this issue. We can try to do some stuff. I will set up some page on the wiki which suggests some approaches that one can take.

  3. Piyush P Kurur reporter

    While we can indeed do one lecture on perl/python or ruby, I am not sure if that is really that effective. Often one needs to spend quit a bit of time with the language to really get it.

    That is not to say that we will not do any of these languages. I am looking for more ideas.

  4. Divyanshu Shende

    Python is a very well known language so there is a chance that many know it already. Besides, spending one lecture on Python would not be of too much help given that the amazingly written Python Documentation is already there on https://docs.python.org/3/ .

  5. rahul saini

    Well ... that is inline with the philosophy of the course - lectures will be pretty much an orientation; the onus of learning the tool in detail is on the student. Moreover, if students are already familiar with python or any one of the scripting languages then one must not force other language just for the sake of making an addition to scripting language list. The popularity and presence of brilliant documentation on python will be a boon instead. This choice also takes into account the future prospects of this course. For instance, python has rooted itself as one of the mainstream language for system administration alongside shell scripting.

    Still if an alternative scripting language is required then I would propose PHP.

  6. Piyush P Kurur reporter

    My view point is similar to what @divyanshu_shende is saying. There is not much point in having a single lecture on any of these languages. The single lecture is not in any way sufficient and there are better resources available elsewhere.

    On the other hand there lots of small things like, using a version controller, or using an issue tracker, which will take a little time to figure out how to get the right approach. This is a fit case for a topic in the course.

    Besides I encourage you to try out few of the advanced topics listed.

  7. Piyush P Kurur reporter

    Just to take the point of @vikasjiitk we can do some security stuff. I was thinking interms of PGP (rather its gnu version)

  8. Srijan R Shetty

    A few things which have helped me while working in the department labs:

    1. Installing a program from source. They could compile R in userspace without root access to try out the same.
    2. Version managers for languages with rapid releases like pyenv/virtualenv for python and nvm for node or rvm for ruby.
    3. The UNIX Philosophy of developing software with special emphasis on streams.
    4. Using common utilities like editors (vim/emacs) or terminal multiplexers (tmux/screen).
    5. Modern build systems, continious integration services like Travis CI, static analysis for linting and preprocessing.
    6. Cron and incron.
    7. sed and awk.
  9. Piyush P Kurur reporter

    While I agree that all the stuff that @srijanshetty mentions should be day to day tools of the hacker, I am not sure if we really need a lecture for such tools. Like for example, what can one explain in say tmux. One can that is a terminal multiplexer and that you can do some cool things like detaching a running session and attach latter on, there is nothing much that can be said about it (reading out the manual is a pretty boring job).

    We can have a wiki page on some of the software that people find useful with a paragraph on what it is used for with appropriate links to stuff.

    This is really the difficulty faced by any instructor of this course. Essentially it is a "apprenticeship" kind of course where one becomes familiar with tools and becomes good over time. We should be careful to preserve this nature.

  10. Log in to comment