Upvote Upvoted 10 Downvote Downvoted
Programming
posted in Off Topic
1
#1
0 Frags +

In the ballpark of about three years ago at my community college, I finally realized that after years of growing up on the computer, playing video games, and enjoying tinkering around with it, I wanted to do something directly related to computers (and realized I wasn't abysmal at math thank you Professor Re). I transferred to my current university in the hopes that I could go from CompSci to Software Engineering, but things didn't pan out for reasons that would take a long-ass time to explain clearly and properly and so here I am as an English major with one last semester before graduation. Right now my only hope is to take this to a graduate school since with that major I have no real job prospects at the bachelor's level and I don't have any connections to do something like technical writing, but I don't want to lose sight of what I really want to do and I sure as hell don't want to be sent to the pits of hell aka become a teacher who will ultimately be sent to the inner-city meat grinder at this level.

I've gotten lots of advice from lots of different people but I really don't know what to make of it; more or less I've been taking a step forward and a step back every which way. Some people have told me to learn Python because everyone needs someone who can do Python scripting at some point or another, others have told me just go through CodeAcademy for HTML/CSS and various scripting (I think Ruby and Rails are taught there with Python), still others mention Javascript, nodejs, going into high-level languages like C++, C#, regular old C, etc. The worst thing is that sometimes the people giving me advice will say "nah don't learn <X> because it'll be a waste of your time when you could learn <Y> and learn better habits at the same time" and another will say that with <X> and <Y> inverted which has left me unsure of what is the best choice that finds a middle ground for what I want to do, what is within my current capacity to learn, and what will be marketable. I guess what I'm looking for from this thread is some sort of clarity on what's feasible given what resources I have at my disposal and perhaps someone like the aforementioned Professor Re to once again illuminate my path. I can't really offer anything of monetary value in return for the latter half of my request but I've at least developed the skills of concise and expansive writing and I can help with anything concerning paper writing in exchange.

Background:
I have a very minimal understanding of what the aforementioned are, obviously know nothing about utilizing them, and the farthest I've gone with any one of them is taking an introductory Python course here at university (we learned Jython for some reason) and trying to find time to go through Zed Shaw's “Learn Python the Hard Way” between my other coursework. I was supposed to learn Javascript at my community college but too many lazy people were trying to use its ability to substitute for a math course without really understanding what they were getting into so we were taught Visual Basic instead. For Python I know babby-level stuff like defining variables and a shaky understanding of using a loop to go through a list of items but if you asked me to come up with a script on my own I'd sit there with my eyes glazing over. Most if not all things math-related take a considerably longer time for me to learn and understand than most people so I'm not exactly looking to become a researcher. I've only been to one Hackathon before with my university's computing club/society and while the people directly affiliated with the club were iffy and a grad student from the club took me and some freshman under his wing thinking he could do it all, the people who went from my university independent of the club were amazing and if I could go to one again actually being able to contribute something greater than sketchy Python, I would.

In the ballpark of about three years ago at my community college, I finally realized that after years of growing up on the computer, playing video games, and enjoying tinkering around with it, I wanted to do something directly related to computers (and realized I wasn't abysmal at math thank you Professor Re). I transferred to my current university in the hopes that I could go from CompSci to Software Engineering, but things didn't pan out for reasons that would take a long-ass time to explain clearly and properly and so here I am as an English major with one last semester before graduation. Right now my only hope is to take this to a graduate school since with that major I have no real job prospects at the bachelor's level and I don't have any connections to do something like technical writing, but I don't want to lose sight of what I really want to do and I sure as hell don't want to be sent to the pits of hell aka become a teacher who will ultimately be sent to the inner-city meat grinder at this level.

I've gotten lots of advice from lots of different people but I really don't know what to make of it; more or less I've been taking a step forward and a step back every which way. Some people have told me to learn Python because everyone needs someone who can do Python scripting at some point or another, others have told me just go through CodeAcademy for HTML/CSS and various scripting (I think Ruby and Rails are taught there with Python), still others mention Javascript, nodejs, going into high-level languages like C++, C#, regular old C, etc. The worst thing is that sometimes the people giving me advice will say [i]"nah don't learn <X> because it'll be a waste of your time when you could learn <Y> and learn better habits at the same time"[/i] and another will say that with <X> and <Y> inverted which has left me unsure of what is the best choice that finds a middle ground for what I want to do, what is within my current capacity to learn, and what will be marketable. I guess what I'm looking for from this thread is some sort of clarity on what's feasible given what resources I have at my disposal and perhaps someone like the aforementioned Professor Re to once again illuminate my path. I can't really offer anything of monetary value in return for the latter half of my request but I've at least developed the skills of concise and expansive writing and I can help with anything concerning paper writing in exchange.

Background:
I have a very minimal understanding of what the aforementioned are, obviously know nothing about utilizing them, and the farthest I've gone with any one of them is taking an introductory Python course here at university (we learned Jython for some reason) and trying to find time to go through Zed Shaw's “Learn Python the Hard Way” between my other coursework. I was supposed to learn Javascript at my community college but too many lazy people were trying to use its ability to substitute for a math course without really understanding what they were getting into so we were taught Visual Basic instead. For Python I know babby-level stuff like defining variables and a shaky understanding of using a loop to go through a list of items but if you asked me to come up with a script on my own I'd sit there with my eyes glazing over. Most if not all things math-related take a considerably longer time for me to learn and understand than most people so I'm not exactly looking to become a researcher. I've only been to one Hackathon before with my university's computing club/society and while the people directly affiliated with the club were iffy and a grad student from the club took me and some freshman under his wing thinking he could do it all, the people who went from my university independent of the club were amazing and if I could go to one again actually being able to contribute something greater than sketchy Python, I would.
2
#2
8 Frags +

It doesn't really matter what language you use when you're just getting started with programming. It's more about the concepts that you learn from it, like basic data structures and how to actually go about writing a program. After you get familiar with one language you find that the ideas are the same across others as well--then it's more about learning the syntax.

I'd say a high-level object oriented language like Python is a good place to start. It's really clean, more so than Java or C++, so I find it easier to pick up since you're not struggling with semantics. It's more used in academia, and not as popular in industry (unlike Java/C/C++ and PHP/JS), but if you already have some background in it, might as well keep going.

It doesn't really matter what language you use when you're just getting started with programming. It's more about the concepts that you learn from it, like basic data structures and how to actually go about writing a program. After you get familiar with one language you find that the ideas are the same across others as well--then it's more about learning the syntax.

I'd say a high-level object oriented language like Python is a good place to start. It's really clean, more so than Java or C++, so I find it easier to pick up since you're not struggling with semantics. It's more used in academia, and not as popular in industry (unlike Java/C/C++ and PHP/JS), but if you already have some background in it, might as well keep going.
3
#3
4 Frags +
but I don't want to lose sight of what I really want to do

If you want a career in CS/CE/EE you should go to school for it.

If you want to learn coding on the side because you enjoy computers and the problem solving that comes with programming there are plenty of resources online to help you.

I would focus on a side-project you want to do. Lets say you want to create a website. Then go learn the languages/material that you will need to complete that side-project. Don't go picking a language before you know what you want to do, that's backwards.

[quote]but I don't want to lose sight of what I really want to do[/quote]

If you want a [b]career[/b] in CS/CE/EE you should go to school for it.

If you want to learn coding on the side because you enjoy computers and the problem solving that comes with programming there are plenty of resources online to help you.

I would focus on a side-project you want to do. Lets say you want to create a website. Then go learn the languages/material that you will need to complete that side-project. Don't go picking a language before you know what you want to do, that's backwards.
4
#4
6 Frags +
cefyrinIt doesn't really matter what language you use when you're just getting started with programming. It's more about the concepts that you learn from it, like basic data structures and how to actually go about writing a program. After you get familiar with one language you find that the ideas are the same across others as well--then it's more about learning the syntax.

I'd say a high-level object oriented language like Python is a good place to start. It's really clean, more so than Java or C++, so I find it easier to pick up since you're not struggling with semantics. It's more used in academia, and not as popular in industry (unlike Java/C/C++ and PHP/JS), but if you already have some background in it, might as well keep going.

This is a really good answer.

Keep in mind that Javascript + HTML/CSS, is headed to more of a web development route. Which is not to say that it's better or worse, just different than programming in C++ or Java. Starting there might be more enjoyable if you like very visual work.

Python is used by a lot of intro to computer science classes for the same reason cefyrin mentioned so I would also put my vote there.

[quote=cefyrin]It doesn't really matter what language you use when you're just getting started with programming. It's more about the concepts that you learn from it, like basic data structures and how to actually go about writing a program. After you get familiar with one language you find that the ideas are the same across others as well--then it's more about learning the syntax.

I'd say a high-level object oriented language like Python is a good place to start. It's really clean, more so than Java or C++, so I find it easier to pick up since you're not struggling with semantics. It's more used in academia, and not as popular in industry (unlike Java/C/C++ and PHP/JS), but if you already have some background in it, might as well keep going.[/quote]
This is a really good answer.

Keep in mind that Javascript + HTML/CSS, is headed to more of a web development route. Which is not to say that it's better or worse, just different than programming in C++ or Java. Starting there might be more enjoyable if you like very visual work.

Python is used by a lot of intro to computer science classes for the same reason cefyrin mentioned so I would also put my vote there.
5
#5
0 Frags +
PapaSmurf323If you want a career in CS/CE/EE you should go to school for it.

That's easier said than done, paying for school is a gigantic factor now that I'm at the end of my bachelor's. If I had the chance to do it all over again I would, but I just can't get the money to start all over again right now.

PapaSmurf323I would focus on a side-project you want to do. Lets say you want to create a website. Then go learn the languages/material that you will need to complete that side-project. Don't go picking a language before you know what you want to do, that's backwards.

I was thinking about creating a personal website, actually. I'll probably take some time during the spring break to do those tutorials for HTML/CSS on CA.

[quote=PapaSmurf323]If you want a [b]career[/b] in CS/CE/EE you should go to school for it.[/quote]
That's easier said than done, paying for school is a gigantic factor now that I'm at the end of my bachelor's. If I had the chance to do it all over again I would, but I just can't get the money to start all over again right now.

[quote=PapaSmurf323]I would focus on a side-project you want to do. Lets say you want to create a website. Then go learn the languages/material that you will need to complete that side-project. Don't go picking a language before you know what you want to do, that's backwards.[/quote]
I was thinking about creating a personal website, actually. I'll probably take some time during the spring break to do those tutorials for HTML/CSS on CA.
6
#6
3 Frags +

People love to argue about pointless shit like which language is the best for beginners, ignore that. Read up on the pros and cons of all the commonly used ones and pick something that looks cool and that you think you'll enjoy. Learning a new language is much easier than you'd think once you already know how to program. But in the beginning, what you want to do is to stick to whatever you picked, and learn it properly. Being indecisive is the best way to never get anything done.

Oh also if technical writing is what you're interested in, a kind of mid-term goal for you would be to pick a free software project on github and offer to write documentation. I'm sure most projects are desperate to find volunteers willing to do that, it's a good experience on your CV, and reading (decent) code is a great way to learn and improve.

People love to argue about pointless shit like which language is the best for beginners, ignore that. Read up on the pros and cons of all the commonly used ones and pick something that looks cool and that you think you'll enjoy. Learning a new language is much easier than you'd think once you already know how to program. But in the beginning, what you want to do is to stick to whatever you picked, and learn it properly. Being indecisive is the best way to never get anything done.

Oh also if technical writing is what you're interested in, a kind of mid-term goal for you would be to pick a free software project on github and offer to write documentation. I'm sure most projects are desperate to find volunteers willing to do that, it's a good experience on your CV, and reading (decent) code is a great way to learn and improve.
7
#7
1 Frags +

Learning LISP/Scheme (MIT used to use Scheme in their CS courses before switching to Python) is a great way to familiarize yourself with recursion and recursive data structures. You may want to read Structure and Interpretation of Computer Programs, which deals with some really important concepts like modular programming and recursion.

Learning LISP/Scheme (MIT used to use Scheme in their CS courses before switching to Python) is a great way to familiarize yourself with recursion and recursive data structures. You may want to read [url=https://mitpress.mit.edu/sicp/full-text/book/book.html]Structure and Interpretation of Computer Programs[/url], which deals with some really important concepts like modular programming and recursion.
8
#8
0 Frags +
vibhavpLearning LISP/Scheme (MIT used to use Scheme in their CS courses before switching to Python) is a great way to familiarize yourself with recursion and recursive data structures. You may want to read Structure and Interpretation of Computer Programs.

Scheme is god awful in my experience, I got into CS a few years ago and it was the introduction language of the first programming class, that was some grade A headache material. I dropped out a bit after and resumed this year (where they started with python), which was much more pleasant and accessible.

[quote=vibhavp]Learning LISP/Scheme (MIT used to use Scheme in their CS courses before switching to Python) is a great way to familiarize yourself with recursion and recursive data structures. You may want to read [url=https://mitpress.mit.edu/sicp/full-text/book/book.html]Structure and Interpretation of Computer Programs[/url].[/quote] Scheme is god awful in my experience, I got into CS a few years ago and it was the introduction language of the first programming class, that was some grade A headache material. I dropped out a bit after and resumed this year (where they started with python), which was much more pleasant and accessible.
9
#9
0 Frags +
genericOh also if technical writing is what you're interested in, a kind of mid-term goal for you would be to pick a free software project on github and offer to write documentation. I'm sure most projects are desperate to find volunteers willing to do that, it's a good experience on your CV, and reading (decent) code is a great way to learn and improve.

I honestly did not know this was a thing. Everyone I encounter IRL seems to be confident in their writing and descriptive skills, sadly.

[quote=generic]Oh also if technical writing is what you're interested in, a kind of mid-term goal for you would be to pick a free software project on github and offer to write documentation. I'm sure most projects are desperate to find volunteers willing to do that, it's a good experience on your CV, and reading (decent) code is a great way to learn and improve.[/quote]

I honestly did not know this was a thing. Everyone I encounter IRL seems to be confident in their writing and descriptive skills, sadly.
10
#10
2 Frags +
KanecovibhavpLearning LISP/Scheme (MIT used to use Scheme in their CS courses before switching to Python) is a great way to familiarize yourself with recursion and recursive data structures. You may want to read Structure and Interpretation of Computer Programs. Scheme is god awful in my experience, I got into CS a few years ago and it was the introduction language of the first programming class, that was some grade A headache material. I dropped out a bit after and resumed this year (where they started with python), which was much more pleasant and accessible.

Waterloo still runs Scheme in the first year cs class because MIT used to. It's a good way to learn functional programming and a different way of thinking. You learn recursion much more in depth than you normally would. Sure it's not the most useful thing to know for industry but that's why it's a teaching language. I'm sorry that your experience with it went poorly but I think it's a pretty good teaching language.

[quote=Kaneco][quote=vibhavp]Learning LISP/Scheme (MIT used to use Scheme in their CS courses before switching to Python) is a great way to familiarize yourself with recursion and recursive data structures. You may want to read [url=https://mitpress.mit.edu/sicp/full-text/book/book.html]Structure and Interpretation of Computer Programs[/url].[/quote] Scheme is god awful in my experience, I got into CS a few years ago and it was the introduction language of the first programming class, that was some grade A headache material. I dropped out a bit after and resumed this year (where they started with python), which was much more pleasant and accessible.[/quote]

Waterloo still runs Scheme in the first year cs class because MIT used to. It's a good way to learn functional programming and a different way of thinking. You learn recursion much more in depth than you normally would. Sure it's not the most useful thing to know for industry but that's why it's a teaching language. I'm sorry that your experience with it went poorly but I think it's a pretty good teaching language.
11
#11
3 Frags +
vibhavpLearning LISP/Scheme (MIT used to use Scheme in their CS courses before switching to Python) is a great way to familiarize yourself with recursion and recursive data structures. You may want to read Structure and Interpretation of Computer Programs, which deals with some really important concepts like modular programming and recursion.

SICP is a very dense and technical book written 30 years ago for MIT students who went into the course with a strong engineering background. Many of the examples in the book use a lot of higher-level math that isn't really needed to learn programming, because it was expected that its target audience would know it already. And nobody except the stuffiest of academics still use Scheme to do anything. SICP is good for what it is but it's not a very helpful book for beginners.

"Learning to program" by reading through a textbook was honestly never something I found very engaging. The best way to learn is by working on tangible projects; you'll probably learn many of the concepts from any textbook just by googling to find out how to solve a problem you run into while coding. The language you start with really doesn't matter as much as people think it does. Python works fine, although I personally think getting used to a language with C-like syntax early on is helpful but that's just my dumb opinion. Once you're really fluent in one programming language, learning others comes very easily.

If you need ideas for programs to write that are beginner-friendly but still challenging, the DWITE problems are a good place to start.
Once you have a good understanding of the basics you should also take a class about data structures and algorithms, since they are very important things to understand for anything past the most basic programs. The Khan Academy course on algorithms looks well thought-out although I haven't personally used it.

[quote=vibhavp]Learning LISP/Scheme (MIT used to use Scheme in their CS courses before switching to Python) is a great way to familiarize yourself with recursion and recursive data structures. You may want to read [url=https://mitpress.mit.edu/sicp/full-text/book/book.html]Structure and Interpretation of Computer Programs[/url], which deals with some really important concepts like modular programming and recursion.[/quote]
SICP is a very dense and technical book written 30 years ago for MIT students who went into the course with a strong engineering background. Many of the examples in the book use a lot of higher-level math that isn't really needed to learn programming, because it was expected that its target audience would know it already. And nobody except the stuffiest of academics still use Scheme to do anything. SICP is good for what it is but it's not a very helpful book for beginners.

"Learning to program" by reading through a textbook was honestly never something I found very engaging. The best way to learn is by working on tangible projects; you'll probably learn many of the concepts from any textbook just by googling to find out how to solve a problem you run into while coding. The language you start with really doesn't matter as much as people think it does. Python works fine, although I personally think getting used to a language with C-like syntax early on is helpful but that's just my dumb opinion. Once you're really fluent in one programming language, learning others comes very easily.

If you need ideas for programs to write that are beginner-friendly but still challenging, the [url=http://dwite.ca/home/pastcontests.html]DWITE problems[/url] are a good place to start.
Once you have a good understanding of the basics you should also take a class about data structures and algorithms, since they are very important things to understand for anything past the most basic programs. The [url=https://www.khanacademy.org/computing/computer-science/algorithms]Khan Academy course[/url] on algorithms looks well thought-out although I haven't personally used it.
Please sign in through STEAM to post a comment.