Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

OT: Computer Science for (a couple steps up from) Dummies

by Your Mother (Bishop)
on May 27, 2019 at 18:08 UTC ( #11100590=perlquestion: print w/replies, xml ) Need Help??

Your Mother has asked for the wisdom of the Perl Monks concerning the following question:

Background: A shake-up at work has me feeling like I should be looking around again. My job is actually more secure than ever—they are even offering a rather large retention bonus if I stay—but I’m disappointed with management’s handling of the difficulties and most of my favorite co-workers are gone. They were a big part of why I’ve stayed.

I have a *little* CS training but most of it is ancient. Perl being high level has shielded me well from the bare metal of the stuff. I can follow most things fine but I don’t know how long it would take me to write a sorting algorithm from scratch, for just one example. I do know it’s longer than you get at the white board in a technical interview. And there are plenty of things I’m sure I’m not even aware I should know. Node traversal, edge detection, binary math… I can work from someone else’s “math” but I’ve got few chops from scratch.

What are the best resources, tutorials, code tests/challenges, etc to get my head above the waves?

Thank you!

  • Comment on OT: Computer Science for (a couple steps up from) Dummies

Replies are listed 'Best First'.
Re: OT: Computer Science for (a couple steps up from) Dummies
by Tanktalus (Canon) on May 27, 2019 at 18:46 UTC

    During a long-term job search of my own, I managed to secure an interview with a great recruiter from Amazon who suggested studying for the interview with "Cracking the Coding Interview". The book was great, I learned a lot that I hadn't come across prior, and it opened my eyes to new ways of thinking about problems. I didn't get the job (nor the next interview with Amazon), but still, the book was great, and fits pretty much exactly with the question you're asking.

    Not quite "a couple steps up" - but since they actually drag you through the solutions to the questions in great detail, it probably will work for you.

    (After the search, I ended up at a place I was less than thrilled with, but managed to get a better gig just a month or so ago, and am enjoying myself again. I don't know that the book helped me end up where I am, but I think it did, and, if not, I'm a better programmer because of it.)

    Best of luck!

Re: OT: Computer Science for (a couple steps up from) Dummies
by eyepopslikeamosquito (Bishop) on May 27, 2019 at 20:42 UTC

    My old notes at On Interviewing and Interview Questions might be of some use, though they're over ten years old now. I haven't been involved with recruiting for over five years now.

    Checking my old notes, I stumbled upon some excellent advice in Re: About 'Show me your Code' written by ... Your Mother! So I suspect you need to be reminded more than you need to be instructed. I'm sure you'll be fine. Good luck and please post what you learned back here.

Re: OT: Computer Science for (a couple steps up from) Dummies
by LanX (Cardinal) on May 27, 2019 at 20:19 UTC
    Your question is pretty challenging because I'm not sure if there is any (internationally) valid canon of (even undergraduate) CS studies.

    Furthermore I doubt that even 10% of the colleagues I met on job (or monks I met here - sorry ) had more than a basic grasp of what I learned in the first 2 years at uni.*

    And some things I already studied in high-school like combinatorics, algebra and probability theory are only part of undergraduate studies in other countries.

    Saying so, I don't think it was the content which mattered, but rather the methodology to cleanly define a problem, to find proper names for the "things" involved and the ability to look-up available research /tutorials on the field.

    In the end I have to look-up the details again after years not using them.

    But at least I know where to look and that they exist.

    Keep in mind that things are evolving far too fast in CS to still be valid after a few years.

    Now I could start dropping names like

    • Graph Theory,
    • Dijkstra-Algorithm,
    • complexity and big O notation,
    • coding theory,
    • information redundancy & Shannon
    • proving algorithms,
    • Boolean algebra and simplifying gate logic
    • other fields of Discrete_mathematics
    • ... and so on
    ... which might have been essential in my uni but but not in the next one.

    (My professors where all from two groups, either a degree in Math or Electrical Engineering. CS as a faculty was too young for "real" CS profs)

    So my advice is

    • don't be too shy
    • don't expect that your interviewer knows much about CS
    • get an overview of the concepts/names of the main topics in CS to avoid a blank stare when asked
    • browse thru different open-course-ware offers for undergraduates
    • learn how to look up things when needed (WP, google, ...)

    Finally: a little search led me to this MIT stuff https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/, but there are certainly also other sources.

    I'd browse thru it and pick the stuff that motivate you.

    One major obstacle though ... they require you to learn some Python! ;-P

    HTH! :)

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    Wikisyntax for the Monastery FootballPerl is like chess, only without the dice

    update

    *) which is also biased b/c my profs used to push their research fields. And being at a technical universities meant plenty of research fields.

Re: OT: Computer Science for (a couple steps up from) Dummies
by stevieb (Canon) on May 27, 2019 at 21:17 UTC

    Being someone who has moved from industry-to-industry my entire life, with periods of extreme uncertainty (I'm currently unemployed, and have been since just after the new year), with absolutely zero education beyond my grade 12 high school, I understand your plight.

    I want to say, with what I said above, that I've done a very good job of ensuring stability through times like this; my understanding is you're "open to opportunities", not "I'm starving, and need to code a grocery store robbery program" ;)

    Can't really give explicit sites to learn, but if you simply search for things like "algorithm code tests", "programming code tests" etc, you can't go wrong. It seems that choroba is very active in these things specifically, so maybe ping him directly.

    Other than that, I think the landscape is changing. I get head-hunted all the time, and what I hate worst is these fsckn "do this test in 60 minutes". That doesn't jive with my work habits. Within this past month, the government of British Columbia threw me a new angle test... they gave me an objective, with one week to put together what I could, however I wanted. Job might use technologies I haven't used before, but I wrote in Perl, and then moved on to the latter finality personal interviews, which is nearly complete.

    Everyone (ie. employers) nearly always say now that a CS degree or higher is required. That's horseshit. I don't have one, and I still have a roof over my head. Experience is key, and if the organization that you may want to move to doesn't recognize that, you probably don't want to work there anyway, as they're likely hiring fresh college grads whom you won't really get along with.

    My advice... stick close to what you know; take what skills you have *outside* of coding, and apply that to your coding experience and merge the two. Also, look at things from the perspective of what you know, not what you don't. It can be intimidating to look at these forsaken "job postings", because almost nothing lines up with what one knows directly. Instead, look inwards: "I know damned well I can learn new stuff, even if I don't like that particular thing, but I love learning anyways so why not".

    Conclusion: be awake and aware and ready to learn new things (new languages, frameworks etc). Don't be afraid to delve into other aspects of life you've got experience with, and use that in interviews ('I've built houses/I can do math; I've had children/I know budgeting; I'm an outdoors person/I know how to find my way; I've fixed motors/I'm a calculating and precise person). Always be ready to explain that "if I don't know the answer to a question, I know how to find it".

    What I've found, is stay true to what you love, and the rest is easy (relatively). Honestly, even during my unemployed times, I'm quite selective, as I'd rather be out camping, boating, fishing, exploring or posting/helping here on Perlmonks than working for a company that focuses on a degree or something, rather than my track record of excellence, knowledge and experience.

    All the best Your Mother,

    -stevieb

    Update: If you find something interesting, let me know... Perl hacker jobs in Canada (ie. not UK or US) are hard to find. Perhaps we can start something weird together ;)

Re: OT: Computer Science for (a couple steps up from) Dummies
by 1nickt (Abbot) on May 27, 2019 at 18:45 UTC

    Are you sure that's the kind of job you want?

    Like you, I've been building apps with Perl and HTTP for 20 years or more; like you I have never studied CS. I had a change of employer recently and while I realize I am very fortunate, I was able to continue employed in my field despite my lack of a formal education in what they didn't use to offer formal education in ... :-)

    Good luck!


    The way forward always starts with a minimal test.
Re: OT: Computer Science for (a couple steps up from) Dummies
by bliako (Prior) on May 28, 2019 at 15:31 UTC

    If there was time for only one topic I would suggest big O notation and deriving bigO values for basic data operations. For example, what's the complexity of inserting in the middle of an array, into a hash, into a linked list. (bigO = complexity of program, time+memory), see http://bigocheatsheet.com . If there was time for a second topic, then Graphs/Trees and searching on them. Third topic? AI

    For an adrenaline-filled learning curve, enter coding competitions. For example, codingame (saw it mentioned on cb and liked it) has challenges to practice (and not necessarily compete) that come with tags like "binary search", "reverse eng", "brute force", so you can research and practice at the same time. And does Perl too.

    My very personal opinion: CS degrees are overrated. CS is not a science. It's probably the only field where self-taught people exceed in talent most CS graduates. The CS degree I knew offered very little in terms of applied mathematics, geometry, algebra, physics (e.g. for raytracing, simulations, AI). Only Computer Engineering offered some of these. And then one got the Business computing students which had no clue apart from being early adapters of the bulsh*t lingo. Future managers on petascale salaries. Steve Jobs clones without vision, passion or aesthetics. Soon, none of us Wozniak folks will fit anywhere within current IT. Any text on how to fit in? (apart from shooting myself)

      > CS degrees are overrated. CS is not a science.

      I disagree, but what's a real science anyway?

      --> XKCD Purity

      > It's probably the only field where self-taught people exceed in talent most CS graduates.

      hng ... I have to work everyday with self-taught people and it drives me crazy to repeat things like "running your code twice successfully in the debugger doesn't qualify as testing"

      OTOH .... the objective of university studies is to produce scientists not programmers.

      But most jobs don't require scientists but engineers.

      And those workplaces which are heavy on the theoretical side tend to hire mathematicians or physicists for their analytical skills.

      Cheers Rolf
      (addicted to the Perl Programming Language :)
      Wikisyntax for the Monastery FootballPerl is like chess, only without the dice

        True what you say, after all, HTML was invented by a physicist-turn-CS and look at the carnage and the body count it left behind ;)

        And I have to admit that I do not prefer to work with self-taught people but I think my observation stands, although it really is subjective and borders hyperbole.

        the objective of university studies is to produce scientists

        maybe in the 70's. Now neither students nor governments, nor companies can afford producing scientists - it seems. Not even programmers it seems also.

        Anyway, I hope YourMother manages the change successfully.

Re: OT: Computer Science for (a couple steps up from) Dummies
by betmatt (Beadle) on May 28, 2019 at 09:19 UTC
    Hi,

    I've found some great CS lectures on YouTube from Harvard University. It is less basic theory and more practical implementation. However I do like the way they move effortlessly between languages and platforms as they compare and contrast. There are some really nice comparisons between C and Python. Obviously Perl is more like C. It is a good reminder that sticking to C standards and ways in Perl is usually the best option. If you want to program with object orientation you might be better off with Python. I think that if I was programming in Python I would miss the C syntax that you get with Perl. Lexical scoping etc. I suppose the lectures offer a way forward in learning new approaches. If you can compare and contrast two or more different languages you will learn a lot. That can springboard you to some basic theory. If your time is limited you might be better off learning theory alongside pseudocode.

      There are some really nice comparisons between C and Python. Obviously Perl is more like C.
      It's not obvious to me. My opinion is that Perl is more like Python than C.

      Plenty of other opinions can be found at Curious about Perl's strengths in 2018 (some of Larry's opinions here).

        It's a bit like with JS being syntactically like Java, but internally close to Perl.

        Perl having more C syntax than Python doesn't mean they are semantically very different.

        We could also quote Guido who said something like "from a 10 km above perspective Perl and Python are the same language"° in a PyCon talk.

        update

        °) found it Keynote: Guido Van Rossum - Pycon 2012 - Minute 5'50

        Cheers Rolf
        (addicted to the Perl Programming Language :)
        Wikisyntax for the Monastery FootballPerl is like chess, only without the dice

Re: OT: Computer Science for (a couple steps up from) Dummies
by karlgoethebier (Abbot) on May 28, 2019 at 21:31 UTC

    Different approach: If your job is secure take the retention bonus and stay. Probably you can negotiate your salary? You are in it for the money 😎. The decision may depend on your age. And another idea might be that you negotiate that you can do some further education/research/studies @work. In the last company i was with this was luckily the case. We where encouraged to play, study and do some „research“ if there was some time left. E.g. I had the luck to play around with PHP, Flex and TransActSQL for 2 or three months. This leaded to some projects that where good for about 5 years of work. A win-win situation. And if I where in your shoes I wouldn’t worry so much about CS. It‘s more about engineering AKA applied science for the self-taught 🍷. Best regards and good luck, Karl

    «The Crux of the Biscuit is the Apostrophe»

    perl -MCrypt::CBC -E 'say Crypt::CBC->new(-key=>'kgb',-cipher=>"Blowfish")->decrypt_hex($ENV{KARL});'Help

A reply falls below the community's threshold of quality. You may see it by logging in.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://11100590]
Approved by Discipulus
Front-paged by LanX
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (6)
As of 2020-12-01 16:04 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    How often do you use taint mode?





    Results (12 votes). Check out past polls.

    Notices?