Going back to school for a programming degree.

whm1974

Diamond Member
Jul 24, 2016
9,436
1,571
126
Well guys, I just applied for financial aid over at SWIC today, and looking to get a degree in programming. This is something I always wanted to do. While I want to learn C and C++, the degree requires me to take one class of Visual Basic and two classes of C#.

Has anyone have any experience in using C# and Visual Basic to write cross platform applications for both Windows and Linux?
 

urvile

Golden Member
Aug 3, 2017
1,575
474
96
Well guys, I just applied for financial aid over at SWIC today, and looking to get a degree in programming. This is something I always wanted to do. While I want to learn C and C++, the degree requires me to take one class of Visual Basic and two classes of C#.

Has anyone have any experience in using C# and Visual Basic to write cross platform applications for both Windows and Linux?

I don't have any personal experience but a guy I worked with said he has done it with C# (.NET core) and he said it is straightforward.

Both C# and VB can handle pointers and data structures in unmanaged memory. Not sure how that translates to Linux though.

Good luck with your studies!
 

mxnerd

Diamond Member
Jul 6, 2007
6,799
1,103
126
There is no school that will only teach you one computer language, none.

You just have to be versatile.

Regarding .NET Core, platform specific code (10%) is about evenly split between Linux and Windows. 90% code is shared between platforms.

https://docs.microsoft.com/en-us/dotnet/core/
 

whm1974

Diamond Member
Jul 24, 2016
9,436
1,571
126
Thanks guys, I would feel really strange using C# to develop Linux applications instead of C and C++, or maybe Java.
 

whm1974

Diamond Member
Jul 24, 2016
9,436
1,571
126
Well guys I D/L a couple of free books on C programming from Amazon for my kindle by iCode Academy. C is something I always wanted to learn anyway.
 

Chaotic42

Lifer
Jun 15, 2001
34,880
2,042
126
Congrats! I'm not a Software Engineer, but I think it's good that you've been working with C so much, because it will make you focus on resource management and give you a better understanding of what's really happening with your computer. I'd also say that it's a good idea to play around with a lot of different languages used for different purposes to broaden your horizons. I (mostly) just program to get things done at work and school and in the last six months I've used C, C++, C#, Python, R, Java, and MATLAB. They won't let me use APL at work, unfortunately.
 

whm1974

Diamond Member
Jul 24, 2016
9,436
1,571
126
Congrats! I'm not a Software Engineer, but I think it's good that you've been working with C so much, because it will make you focus on resource management and give you a better understanding of what's really happening with your computer. I'd also say that it's a good idea to play around with a lot of different languages used for different purposes to broaden your horizons. I (mostly) just program to get things done at work and school and in the last six months I've used C, C++, C#, Python, R, Java, and MATLAB. They won't let me use APL at work, unfortunately.
I think I'm going to have to buy the dead tree versions of these books so I can easily flip back and forth.
 

Chaotic42

Lifer
Jun 15, 2001
34,880
2,042
126
I think I'm going to have to buy the dead tree versions of these books so I can easily flip back and forth.

I liked a book called "C How to Program" by Deitel and Deitel, but that was back when I was in high school. There have changes to the C specification in the last decade, so it might be worth learning about those. C++ added things like auto pointers which are worth learning about, even if code you work on doesn't use them.
 

SteveGrabowski

Diamond Member
Oct 20, 2014
8,977
7,691
136
I liked a book called "C How to Program" by Deitel and Deitel, but that was back when I was in high school. There have changes to the C specification in the last decade, so it might be worth learning about those. C++ added things like auto pointers which are worth learning about, even if code you work on doesn't use them.

Ugh I hated that book when I used it in my freshman programming class. It's honestly the worst textbook I can remember from any of my classes. It was so boring and monotonous. An introductory book that's exciting is The Structure And Interpretation of Computer Programs, which is free from MIT Press.

https://mitpress.mit.edu/sicp/full-text/book/book.html

There is also a reasonably modern introductory course based on that book from Berkeley that you can see on youtube:

https://www.youtube.com/playlist?list=PLhMnuBfGeCDNgVzLPxF9o5UNKG1b-LFY9

Plus the readers:
http://www-inst.eecs.berkeley.edu/~cs61a/reader/vol1.html
http://www-inst.eecs.berkeley.edu/~cs61a/reader/vol2.html

I think the teacher (Brian Harvey) is excellent also. There should be a page in those readers somewhere showing how to setup UCBscheme with emacs, though you should do that in a Linux VM if you're running Windows.

The authors of the book actually gave a course to HP employees in the mid 1980s that was taped, and I think the lectures are amazing:

https://www.youtube.com/playlist?list=PL8FE88AA54363BC46

I especially love the first few minutes of the introductory lecture:
 
  • Like
Reactions: dank69

whm1974

Diamond Member
Jul 24, 2016
9,436
1,571
126
Ugh I hated that book when I used it in my freshman programming class. It's honestly the worst textbook I can remember from any of my classes. It was so boring and monotonous. An introductory book that's exciting is The Structure And Interpretation of Computer Programs, which is free from MIT Press.

https://mitpress.mit.edu/sicp/full-text/book/book.html

There is also a reasonably modern introductory course based on that book from Berkeley that you can see on youtube:

https://www.youtube.com/playlist?list=PLhMnuBfGeCDNgVzLPxF9o5UNKG1b-LFY9

Plus the readers:
http://www-inst.eecs.berkeley.edu/~cs61a/reader/vol1.html
http://www-inst.eecs.berkeley.edu/~cs61a/reader/vol2.html

I think the teacher (Brian Harvey) is excellent also. There should be a page in those readers somewhere showing how to setup UCBscheme with emacs, though you should do that in a Linux VM if you're running Windows.

The authors of the book actually gave a course to HP employees in the mid 1980s that was taped, and I think the lectures are amazing:

https://www.youtube.com/playlist?list=PL8FE88AA54363BC46

I especially love the first few minutes of the introductory lecture:
Thanks I start reading the book for MIT press. Is there a D/L copy that I could read offline?
 

SteveGrabowski

Diamond Member
Oct 20, 2014
8,977
7,691
136
Thank you so much.

I think it's one of the most exciting books out there. It's very demanding for an intro book (it used to be the textbook for the intro course at MIT before they watered the course down), but some of the projects in the problem sets are amazing. There is one set of exercises that has you use recursion to make graphics in the style of MC Escher's Square Limit. If you follow the course readers for that Berkeley class I linked it should have the files you need to actually to do these problems and create your own graphics in that style.

square-limit.jpg
 

HitAnyKey

Senior member
Oct 4, 2013
648
13
81
Congrats on your journey. I work in IT field and have considered moving into Software development as well because I like to build stuff.

Have you considered what type of programming you want to get paid to do?

Java is cross platform and very in demand skill. Android / Mobile development could help you learn the basics of programming while being very cool making your own mobile apps and potentially a source of income. That is where I see the market going.

Of course learning C, C#, VBScript, Perl and Bash and Powershell scripting would be great skills to have. But I think its always good to learn something that is fun and can pay off sooner.

Good luck.
 

whm1974

Diamond Member
Jul 24, 2016
9,436
1,571
126
Congrats on your journey. I work in IT field and have considered moving into Software development as well because I like to build stuff.

Have you considered what type of programming you want to get paid to do?

Java is cross platform and very in demand skill. Android / Mobile development could help you learn the basics of programming while being very cool making your own mobile apps and potentially a source of income. That is where I see the market going.

Of course learning C, C#, VBScript, Perl and Bash and Powershell scripting would be great skills to have. But I think its always good to learn something that is fun and can pay off sooner.

Good luck.
Linux game development.
 

sourceninja

Diamond Member
Mar 8, 2005
8,805
65
91
I think the most important thing to realize is that learning a programming language is not the point of the education. The language is the tool they use to provide the education on programming/development/architecture. In my career I have been asked/forced/selected multiple languages. Learning a language well enough to get work done is fairly trivial once you have developed solid fundamentals. Learning it well enough to architect solid well designed solutions takes years of experience working in those languages. I've had to write in cobal, perl, korn, bash, vb6, c, pro c, php, java, groovy, ruby (well in the form of chef), C#, powershell, javascript/node, python (my true love), and finally go. I even had a job at one point that required me to design webpages in PL/SQL. It was terrible, but it needed to be done.

In fact, when I taught programming classes I explicitly did not teach a language. We used psudocode and real code examples in the class, but the students were expected to learn the needed syntax on their own. The value wasn't in teaching the options of a printf statement but rather the reasons and patterns that lead you to printing formatted data to the screen. Of course all work had to be turned in written and functional with the language of the course and I would answer questions if asked.

The techniques used to be successful in almost all of those cases were similar. I was able to leverage my previous experience to quickly get up to speed (we are talking days) and my experience with multiple languages only made me stronger. So don't worry about the language a course uses, worry about the design patterns, methods, and theory you learn.
 
  • Like
Reactions: jman19

whm1974

Diamond Member
Jul 24, 2016
9,436
1,571
126
I think the most important thing to realize is that learning a programming language is not the point of the education. The language is the tool they use to provide the education on programming/development/architecture. In my career I have been asked/forced/selected multiple languages. Learning a language well enough to get work done is fairly trivial once you have developed solid fundamentals. Learning it well enough to architect solid well designed solutions takes years of experience working in those languages. I've had to write in cobal, perl, korn, bash, vb6, c, pro c, php, java, groovy, ruby (well in the form of chef), C#, powershell, javascript/node, python (my true love), and finally go. I even had a job at one point that required me to design webpages in PL/SQL. It was terrible, but it needed to be done.

In fact, when I taught programming classes I explicitly did not teach a language. We used psudocode and real code examples in the class, but the students were expected to learn the needed syntax on their own. The value wasn't in teaching the options of a printf statement but rather the reasons and patterns that lead you to printing formatted data to the screen. Of course all work had to be turned in written and functional with the language of the course and I would answer questions if asked.

The techniques used to be successful in almost all of those cases were similar. I was able to leverage my previous experience to quickly get up to speed (we are talking days) and my experience with multiple languages only made me stronger. So don't worry about the language a course uses, worry about the design patterns, methods, and theory you learn.
Thanks, I did figured I would end learning multiple languages in order to get work done.
 

razel

Platinum Member
May 14, 2002
2,337
93
101
Visual Basic is wordy, great if you understand English. C++ is symentic/symbolic. Far less English involved. Learn both. You need to be able to port code across languages. You can't theorize ahead of time what you'll be programming in. Just start programming. Find a problem or something you want to automate in your life and program. The language you'll have to learn and objects you'll use when you start to make money will be whatever the business requires.

The future is currently machine learning and it's fun. It is not something that I would have predicted in college nearly 20 years ago, but that's the point. Back then they got us on ADA, Basic and C and it didn't matter.