Jump to content
3 minutes ago, Claryn said:

Im in what we call a "Civil Engineer"-program. Its a 5-year integrated Masters in Computer Science. Alongside all the Computer Science subjects, we do have a lot of engineering maths, a lot of electrical engineering, physics etc. So in this course, math is a huge part. However, we also have a  3-year Bachelors in Computer Science that is not an engineering degree. It has the same programming-courses as the "Civil Engineer" course + some front-end web development. The only math they have is an introductory course to calculus and elementary discrete mathematics. That is a course that probably will make you a just as good software developer, but not an engineer. 

Then maybe the reason that you're not getting the nice CS or SE classes like:
 

  • Manage Software projects
  • Software architecture and design
  • Software testing and QA
  • Human/Computer interactions
  • OS I/OS II
  • and many others.

is because you're not dedicating all of your time solely to studying CS. Computer Science is so much larger than some introduction (or even advanced studies of various languages), some discrete math, some logic, and some web development.

Some things that you should consider dedicating some time to studying on your own would be:

  • Data structures
  • Analysis of algorithms
  • Formal Languages
  • Testing/QA
  • Designing parallel algorithms
  • Intro to digital devices
  • Microprocessors
  • OS
  • Programming Language Analysis
  • Construction and analysis of compilers.

Of these, the bare minimum necessary to really build a simple production quality, real world project would be:

  • Data Structures
  • Analysis of Algorithms
  • Testing/QA

 

When you are at the beginning stages of learning, it's not usually wise to try to extend yourself too far. One project that I've started working on for myself this past week is to display images using Python's Turtle. It's a seemingly silly and inconsequential project, but it can teach quite a bit about managing decently sized projects, making compromises, and the underlying way that computer graphics works.

Take a look at projecteuler.net. Make some console games in VC++. Make a program that can solve a maze presented in a black and white .jpg file. I think that you would be wise to pick small projects like these that are interesting, challenging, and have tangible results that you can show off to others in your class.

ENCRYPTION IS NOT A CRIME

Link to post
Share on other sites

1 minute ago, straight_stewie said:

Then maybe the reason that you're not getting the nice CS or SE classes like:
 

  • Manage Software projects
  • Software architecture and design
  • Software testing and QA
  • Human/Computer interactions
  • OS I/OS II
  • and many others.

is because you're not dedicating all of your time solely to studying CS. Computer Science is so much larger than some introduction (or even advanced studies of various languages), some discrete math, some logic, and some web development.

Some things that you should consider dedicating some time to studying on your own would be:

  • Data structures
  • Analysis of algorithms
  • Formal Languages
  • Testing/QA
  • Designing parallel algorithms
  • Intro to digital devices
  • Microprocessors
  • OS
  • Programming Language Analysis
  • Construction and analysis of compilers.

Of these, the bare minimum necessary to really build a simple production quality, real world project would be:

  • Data Structures
  • Analysis of Algorithms
  • Testing/QA

 

When you are at the beginning stages of learning, it's not usually wise to try to extend yourself too far. One project that I've started working on for myself this past week is to display images using Python's Turtle. It's a seemingly silly and inconsequential project, but it can teach quite a bit about managing decently sized projects, making compromises, and the underlying way that computer graphics works.

Take a look at projecteuler.net. Make some console games in VC++. Make a program that can solve a maze presented in a black and white .jpg file. I think that you would be wise to pick small projects like these that are interesting, challenging, and have tangible results that you can show off to others in your class.

I dont think you understand what I am studying, because on your lists the only thing we are not formally taught are: Testing/QA, Software Architecture and Design, and Manage Software Projects. Everything else I have either had several courses in, and/or will go more in-depth on. 

For instance, I have a course in electrical engineering and digital design right now where we design electrical circuits, solder them to PCBs and test them using signal generators and oscilloscopes. We also design digital circuits - next week I have a lab where we solder an 8bit computer to a PCB (built from EEPROMs, logic gates etc) creater our own Assembler and program it to calculate Fibonacci-numbers. All from scratch.

Ive had a really in-depth course in data structures and algorithms, looking at algorithm runtime analysis - where we do stuff like validate whether an NP-problem has a solution in linear runtime etc. 

Next semester I have a more advanced course in digital design where we program a micro-controller in Assembly to do stuff. Next spring we have an OS course where one of the projects is to write our own compiler. 

 

I have learned all of this stuff, but I have never learned how to do a project, start to finish. That is not until the last semesters where we have larger 1-year projects in teams. 

 

Running Arch with i3-gaps on a Thinkpad X1 Extreme
Data Science Postgrad

 

Link to post
Share on other sites

1 hour ago, Claryn said:

I have learned all of this stuff, but I have never learned how to do a project, start to finish. That is not until the last semesters where we have larger 1-year projects in teams. 

That senior project is learning how to tackle a project. Aside from smaller group projects you might do, the senior project is taking everything you've learned and putting it into practice. It might be missing some things that are part of the software development process like estimating hours or whatnot, but working as a team to get the job done is more important than the smaller, managerial details. Besides, most of that stuff is useless anyway until you get experience. You can't accurately assess how long you'll take to do something if you've never done it before, for example.

 

But otherwise, there are some theories to doing software development, but IMO, you kind of don't learn by reading a book. You learn by doing.

 

Besides, every company manages projects differently.

Link to post
Share on other sites

2 hours ago, M.Yurizaki said:

That senior project is learning how to tackle a project. Aside from smaller group projects you might do, the senior project is taking everything you've learned and putting it into practice. It might be missing some things that are part of the software development process like estimating hours or whatnot, but working as a team to get the job done is more important than the smaller, managerial details. Besides, most of that stuff is useless anyway until you get experience. You can't accurately assess how long you'll take to do something if you've never done it before, for example.

 

But otherwise, there are some theories to doing software development, but IMO, you kind of don't learn by reading a book. You learn by doing.

 

Besides, every company manages projects differently.

The point is that I dont want to wait until my senior year to do that - I feel like that would be too late. I want to put the things I have already learned into practice but, of course, at a smaller scale. 

I asked if anyone knows of any resources that could help me with exactly that, and point me at some frameworks or technologies to look at. So far Django with Python has been proposed. I said I am not very fond of Python but will take a look and asked if you know of any similar stuff for other languages or platforms like C++ or Java.

 

TLDR: 

- Can you suggest any resources to help me take everything Ive learned and put it into practice?
- Are there any technologies or frameworks that I should take a look at, that would work good for smaller projects that could be deployed as a web-application or desktop-application.

Running Arch with i3-gaps on a Thinkpad X1 Extreme
Data Science Postgrad

 

Link to post
Share on other sites

2 minutes ago, Claryn said:

The point is that I dont want to wait until my senior year to do that - I feel like that would be too late. I want to put the things I have already learned into practice but, of course, at a smaller scale. 

I asked if anyone knows of any resources that could help me with exactly that, and point me at some frameworks or technologies to look at. So far Django with Python has been proposed. I said I am not very fond of Python but will take a look and asked if you know of any similar stuff for other languages or platforms like C++ or Java.

 

TLDR: 

- Can you suggest any resources to help me take everything Ive learned and put it into practice?
- Are there any technologies or frameworks that I should take a look at, that would work good for smaller projects that could be deployed as a web-application or desktop-application.

Honestly, I don't think the language you use should matter much, especially if this is just for practice. If you can do it quickly in Python, you can do something similar in another language later on. I learned Django in a couple days for a Hackathon and I had barely used any Python before then.

Link to post
Share on other sites

1 hour ago, Claryn said:

TLDR: 

- Can you suggest any resources to help me take everything Ive learned and put it into practice?

Well, no. Unless you can find a mentor who's willing to do something with you, you pretty much have to do this on your own. And the only place I can point you: it starts with an idea. If you do not have an idea of what you want to do, then anything you may start with will stagnate and sit there.

Link to post
Share on other sites

1 hour ago, Claryn said:

The point is that I dont want to wait until my senior year to do that - I feel like that would be too late. I want to put the things I have already learned into practice but, of course, at a smaller scale. 

7 minutes ago, M.Yurizaki said:

If you do not have an idea of what you want to do, then anything you may start with will stagnate and sit there.


I think I see what's going to fit here. It's something that I do all the time and don't even think about it. Small, one weekend or at most one week projects (with school one week is really not that much time to do extra stuff). I've done things like: process audio files and play a facsimile of them with the windows beep, basic image processing (my longest running project to date), projecteuler.net problems can last far longer than just solving them (for example,  I have found a solution to the first problem that runs in n time when n is the set of numbers to sum multiples of, rather than n time when n is the maximum value to sum below. For reference, the first problem is to find the sum of multiples of 3 or 5 below 1000. The hard solution takes 2 iterations while the most obvious solution takes 1000) there are many other examples of fancy solutions to Euler problems. 

Oh, I feel that because you explicitly said that you don't just want to learn new algorithms and stuff, which is what projecteuler is, I should explain why I put that in the list: Looking at and learning new simple things is what inspires you to do bigger projects, and gives you information on what type of projects you really enjoy working on.

To answer your specific question about technologies, I would suggest learning something like MatLab or CUDA. My projects of choice usually involve large amounts of intense computation and personal experimentation with new-to-me algorithms and technologies, rather than useful user space stuff. Otherwise, I might suggest that you simply pick your favorite language and dive off of the deep end with it. Learn every thing about that language, all of the standard libraries, all of the popular third party libraries, learn it so well that you could even write a runtime (or compiler or interpreter or whatever) for it. Knowing a modern OO language inside and out like that can be very beneficial and will have applications and consequences reaching far beyond just having a good knowledge of the language.

 

ENCRYPTION IS NOT A CRIME

Link to post
Share on other sites

2 hours ago, Claryn said:

The point is that I dont want to wait until my senior year to do that - I feel like that would be too late. I want to put the things I have already learned into practice but, of course, at a smaller scale. 

I asked if anyone knows of any resources that could help me with exactly that, and point me at some frameworks or technologies to look at. So far Django with Python has been proposed. I said I am not very fond of Python but will take a look and asked if you know of any similar stuff for other languages or platforms like C++ or Java.

 

TLDR: 

- Can you suggest any resources to help me take everything Ive learned and put it into practice?
- Are there any technologies or frameworks that I should take a look at, that would work good for smaller projects that could be deployed as a web-application or desktop-application.

Node.JS is a great option for web development. If you want to do Java you can use Tomcat, Jetty or Spark (to name a few). Not sure about C++. Keep in mind though, these web servers are not as popular as other alternatives like Node.JS, PHP, Django, or Ruby on Rails. 

 

If you use Node.JS you can use Electron to make desktop apps too. 

15" MBP TB

AMD 5800X | Gigabyte Aorus Master | EVGA 2060 KO Ultra | Define 7 || Blade Server: Intel 3570k | GD65 | Corsair C70 | 13TB

Link to post
Share on other sites

3 minutes ago, Nicholatian said:

Please, please please please please please do not recommend Java applets. They’re arguably worse than Shockwave Flash, and come with just as many security issues and they take ten times as long as Flash to get an idea implemented. See here:

oracle-2014-annual-security-report-91-ja

 

Their design is fatally flawed and Oracle doesn’t care to change it. Honestly they should’ve died off when they were invented, but some clueless manager thought it would be a good way to make a cross-platform application… and it was all downhill from there.

Java applets are basically dead now. Firefox dropped support for the Java plugin. I don't think Chrome supports Java applets either.

Link to post
Share on other sites

8 hours ago, Nicholatian said:

Please, please please please please please do not recommend Java applets. They’re arguably worse than Shockwave Flash, and come with just as many security issues and they take ten times as long as Flash to get an idea implemented. See here:

oracle-2014-annual-security-report-91-ja

 

Their design is fatally flawed and Oracle doesn’t care to change it. Honestly they should’ve died off when they were invented, but some clueless manager thought it would be a good way to make a cross-platform application… and it was all downhill from there.

OP insisted they go that route, so I wasn't going to stop them :P

Link to post
Share on other sites

6 hours ago, M.Yurizaki said:

OP insisted they go that route, so I wasn't going to stop them :P

I never insisted to go with Java. It is one of the languages I know the best, so I kept mentioning it to have someone comment on whether it would be a good fit for what I want to do or not. Apparently its not as good for web deployment. 

Running Arch with i3-gaps on a Thinkpad X1 Extreme
Data Science Postgrad

 

Link to post
Share on other sites

I'd just like to thank everyone for some great input. 

I've decided to take a look at web development, as imo. the easiest and best way to create apps that will reach people, is through the web. If it's not an application that requires a lot of resources from a local machine, but shouldn't it run in a browser, right?

 

I managed to find a video that outlines all the steps of creating and deploying a web application, and mentions a lot of different frameworks to use: 

 

It seems like a good guide and gave me a pretty good overview. What do you guys think? Is this video relevant or am I looking in the wrong direction??

Running Arch with i3-gaps on a Thinkpad X1 Extreme
Data Science Postgrad

 

Link to post
Share on other sites

5 minutes ago, Claryn said:

Apparently its not as good for web deployment. 

Java is still one of the most popular web dev languages, it's just as good as anything else out there (besides Java and Oracle being terrible in general.)

 

 

1474412270.2748842

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×