DEV Community

Mika Feiler
Mika Feiler

Posted on


The *5* 'as well as you can' CS assignments that I failed to submit, on my freshman semester

I'm failing my freshman semester right now, for the second time (on another uni), and I'm depressed

I hate when CS assignments have pretty-much-close-to-infinite amount of facultative features for the program/result to have, and doing any of them influences the fundamental design, but greatly increases time needed for it, in a way imprevisible for the students

-- me, on Twitter and Mastodon

  1. (DWIN4) Generate a BMP file, of which the JPEG compression ratio will be the greatest. I started researching JPEG algorithm and machine learning solutions to this, started trying to code something up, ... in Fortran btw.

  2. (DWIN5) Design a DTD schema for a made up data model for a store, which would have stuff like groceries, stationery, clothing and stuff on shelves and some fields for these products, and types of products I was late on submitting DWIN4(↑) and still trying, and also it was hard to make that stuff up.

  3. (DWIN7) Find the furthest legit route in the network you can. A competition who can find the furthest was announced, as in case of the first one.

  4. (DWIN8) Not exactly infinite, but the level of detail could be pushed far I think. Host A was connected to local network. It's going to use DHCP config, then with the use of ARP learn the hw addr of host and send to it seeral packets of data with TCP. Describe {exactly, in detail} [this is a translation] the packets the sending and receiving of which should be expected.

  5. (SOP-MS) Write a simple program — shell, in ANSI C. The program should take commands as input, and then execute operations according to them. The shell it supposed to:

    • (1.0p) print the prompt of [{path}] $
    • (1.0p) support cd, analogous to the one from bash
    • (0.5p) support exit command, ending the operation of the shell program
    • (0.5p) support help command, displaying info about the author and supported features
    • (2.0p) support two other, arbitrarily selected commands of a shell (it's about an own, simple implementation of two commands, for example cp, sources for which where not provided on the classes)
    • (2.0p) take commands referring by name to scripts and programs present in directories describes by the envirinmental variable PATH and allow for execution of these scripts with arguments (i.e. fork+exec*)
    • (1.0p) print error message, when correct command interpretation is impossible
    • (2.0p) having some so-called additional frills (depending on the level of complexity of the problem), for example displaying the login of a currently logged in user, color support, quoted arguments support, [reasonable] support of signals (for example, Ctrl+Z), command history support, syntax autocompletion, etc. I started digging deep into libedit...

While I understand how these assignments are encouraging creativity and may really provide great learning experience, these are pretty much flawed, at least in cases like me. I really love these teachers, their attitude and everything, but it's just these assignments being like "there is no such thing as «done»". Obviously they were only a minor contribution to me failing this semester, but still... (*failing — I still might pass)

Top comments (1)

daemoen profile image
Marc Mercer

These assignments are actually a good use case to prepare you for working as a developer in the real world/industry. As a developer, you are going to constantly be given 'endless' assignments. Your biggest goal is going to be to find a way of defining 'minimum viable function', in order to iterate.

In the case of these assignments, find out from your professors what the minimum viable function is, and come up with a map for what that would look like in the languages you are using. Go from there, and don't give up. The problem you are describing is that you are likely trying to complete 'everything' at once, which any experienced developer (or even development project) will teach you -- isn't how development works. Even DevTo is constantly improving and iterating.