Jump to content

Real-life application examples

Claryn

Hi.

 

I am currently a Computer Science student, and as everyone else studying computer science, we have different courses in Java, Python,  C++, you name it. All these courses have these academic exercises that are supposed to teach us how programming works - how to solve problems. The only problem is that none of the tasks we are assigned feel valuable. Sure, I made this generic application that some professor came up with, because it involves some aspects of a language or framework that is part of our syllabus, but it is utterly useless and teaches us nothing about how to create a proper application that someone would find useful.

 

I checked the resume of most of the professors, and none of them has had a real programming job. Most of them never left campus, and is not teaching us how to be something they never were.

 

Now what I would like are some real applications, that are not too complex or big, where you can study the source-code, and see every detail of how it was developed. I think that just studying a real, proper project is way better than implementing all the different sorting algorithms in language Y, because it doesnt teach you shit about how a proper application is started, made, or finished. 

 

I have done some searching around, and I cant seem to find any good places to start. I know there are a lot of open-source projects at GitHub, but starting to look at a repo of tens of thousands of lines of code doesnt seem like the best place to start. 

So are there any resources like this that you know of, and that you could recommend? 

Thank you. 

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

 

Link to comment
Share on other sites

Link to post
Share on other sites

I know you've said that looking around GitHub repos might not be the best place to start, but I don't think its that bad an idea.

 

You are right, that looking at the project as a whole, its daunting.

What I found myself doing when I was learning, was more looking at the open source tools, extensions etc, that I already used.

 

I'd then go "Huh X is cool" in this thing I'm using and I'd go poking around the source code.

It lets you see some real code, it lets you learn the very useful tool of poking around the source code and finding the bits you want, and it lets you learn a bit more about the tool you like.

 

Or I'd have some tool and I'd have some bug with it, so I'd either submit my own issue or find the existing ticket for it. I'd then just poke around the commits that would be used to fix the issues, since its always quite cool to see the fixes that go in.

 

If you start with something simple and that you already know, and try it in a language you know/is close to the ones you know, then you shouldn't be too bad doing that.

 

Looking at files or functions at a time, or even just individual commits gives you a nice subsection of what may be a huge repo, and you slowly get a bit more of an appreciation from it.

That said, it was only when I started actually working in those massive systems that you get a deeper understanding of it, but for a better insight, its fine to just at the parts that interest you.

 

I found doing a year of work as part of my degree really helped my programming skills like this.

CPU: 6700k GPU: Zotac RTX 2070 S RAM: 16GB 3200MHz  SSD: 2x1TB M.2  Case: DAN Case A4

Link to comment
Share on other sites

Link to post
Share on other sites

Unfortunately, finding source code that isn't daunting and looking at it doesn't teach you anything more about the software development process than what you gain from the check-in comments (if they were even detailed to begin with).

 

Like any good invention, software starts with an idea. Have you noticed something you think it could be done better? Or that there's something you want to do but can't? Or maybe just something you want to do to see if you can do it. Ideally most software development is designing. Design a good solution to the problem and cement it to prevent feature creep. If your design is sound, your implementation should be trivial and testing should be minimal.

 

But that's the key to any software project: figure out how you're going to solve the problem before you try to solve it.

Link to comment
Share on other sites

Link to post
Share on other sites

Something I've found pretty manageable is to take a third-party library you use that's open source and go read through the code for some of the functions or classes you use a lot.  E.g., I use the Beautiful Soup library a lot in Python for web scraping, and I once spent an afternoon just looking through it and seeing how it works.  It's usually more manageable than a whole Github repo, and if it's a library you use somewhat regularly, you should be familiar with what some of the functions and classes and such do, which helps give you some grounding.

Link to comment
Share on other sites

Link to post
Share on other sites

2 minutes ago, WiiManic said:

snip

 

Thanks for the reply. 

I dont necessary mean looking at the code, but more like looking at how its built. I am currently in a course on object-oriented programming in Java, which is the building on another course we had on object-oriented programming an earlier semester. The problem is that no one though us how to build an application - like creating the .jar file that can execute on someones machine. 

No one has taught us how to deploy a Java web-app. Sure, we know how to create a 600x400 window, render graphics in it and create a space-shooter game - but no one has a clue on how to make it executable outside of our IDE, how to update it after-the-fact. 

 

Whenever I look up smaller projects on Github that uses language X, it ALWAYS uses 2-3 others, and some web-protocol or remote server configuration that probably requires its own semester of studying. I dont want to look at projects that is using C++ for the main application, some Python script and jsNode to deploy it on an Apache server that requires knowledge of Php and databases to set up. I always come to point in the source code where I am stuck, because they uses 2-3 different frameworks or technologies that I dont know. There must be a middle ground?

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

 

Link to comment
Share on other sites

Link to post
Share on other sites

7 minutes ago, Azgoth 2 said:

 and if it's a library you use somewhat regularly.

That is the issue. Aside from the generic academic exercises we are presented with at Uni., that all have strict test-applications written for that -exact- application, so you cant do shit with it, if its not in the description of the task. 

We never got to learn how to use external libraries, and even though I have some ideas of projects Id like to work on, I have no idea where to start. There is no one that has taught us how to start a project, and how to finish it. Writing the code should be doable, but not necessarily version control, updates, deployment and support. 

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

 

Link to comment
Share on other sites

Link to post
Share on other sites

3 minutes ago, Claryn said:

Whenever I look up smaller projects on Github that uses language X, it ALWAYS uses 2-3 others, and some web-protocol or remote server configuration that probably requires its own semester of studying. I dont want to look at projects that is using C++ for the main application, some Python script and jsNode to deploy it on an Apache server that requires knowledge of Php and databases to set up. I always come to point in the source code where I am stuck, because they uses 2-3 different frameworks or technologies that I dont know. There must be a middle ground?

The problem with web technologies is you need to know those things. A web application composes of building two things at the minimum: a client side "application" and the server. And unfortunately the world decided that the client side of a web-server if you want to run it off a standard web browser means knowing HTML, CSS, and JavaScript (well, you can get by without JS if you don't want dynamic elements). The server side you need something that handles HTTP requests and something to process those HTTP requests and again, most of the world decided on those technologies.

 

Well beyond that, you could find blogs and such from developers like Joel on Software or Raymond Chen's The Old New Thing. Joel's a little more generic with development topics but Raymond Chen is specific to Windows.

 

The development process itself is something you don't learn from source code repositories. You don't get to see things like requirements and design documentation and other things that have far more value than the source code itself. All the source is is an implementation of an idea. If the person designed it well, you can implement it in any language, provided you can find alternatives to what they used.

Link to comment
Share on other sites

Link to post
Share on other sites

Let me give you a concrete example:

 

I watched a video over at Computerphile on Youtube where a guy there talked about this program he made in Python that takes a labyrinth formatted as a .png with black and white pixels, where black were walls. The program created a graph based on junctions in the labyrinth, found the shortest path out, and outputted a .png with the maze, where it drew the path it followed in a different color.

 

Sure, I implemented this in Java, using Dijkstra, A-star, breadth-first, depth-first etc.

Now Id love to deploy this somewhere instead of just running it from my IDE all of the time: so sure I can build it into a .jar file, no problem.

I also know some JavaFXML, so I can create a somewhat usable UI that allows you to choose what implementation, a progress bar, select image etc. BUT what I cant do, is get it to run on someone else's computer, because it won't run on my laptop, but it will on my desktop. Weird when both have the same verson of Java installed?
And what about adding it as a web-app on my webpage?  

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

 

Link to comment
Share on other sites

Link to post
Share on other sites

2 minutes ago, M.Yurizaki said:

The problem with web technologies is you need to know those things. A web application composes of building two things at the minimum: a client side "application" and the server. And unfortunately the world decided that the client side of a web-server if you want to run it off a standard web browser means knowing HTML, CSS, and JavaScript (well, you can get by without JS if you don't want dynamic elements). The server side you need something that handles HTTP requests and something to process those HTTP requests and again, most of the world decided on those technologies.

 

Well beyond that, you could find blogs and such from developers like Joel on Software or Raymond Chen's The Old New Thing. Joel's a little more generic with development topics but Raymond Chen is specific to Windows.

 

The development process itself is something you don't learn from source code repositories. You don't get to see things like requirements and design documentation and other things that have far more value than the source code itself. All the source is is an implementation of an idea. If the person designed it well, you can implement it in any language, provided you can find alternatives to what they used.

Yes, the development process is what I'd like to study. I understand that I would need a client side and a server, but there HAS to be someone that made a generic one already, that will handle applications written in X,Y and Z? 

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

 

Link to comment
Share on other sites

Link to post
Share on other sites

14 minutes ago, Claryn said:

Let me give you a concrete example:

 

I watched a video over at Computerphile on Youtube where a guy there talked about this program he made in Python that takes a labyrinth formatted as a .png with black and white pixels, where black were walls. The program created a graph based on junctions in the labyrinth, found the shortest path out, and outputted a .png with the maze, where it drew the path it followed in a different color.

 

Sure, I implemented this in Java, using Dijkstra, A-star, breadth-first, depth-first etc.

Now Id love to deploy this somewhere instead of just running it from my IDE all of the time: so sure I can build it into a .jar file, no problem.

I also know some JavaFXML, so I can create a somewhat usable UI that allows you to choose what implementation, a progress bar, select image etc. BUT what I cant do, is get it to run on someone else's computer, because it won't run on my laptop, but it will on my desktop. Weird when both have the same verson of Java installed?
And what about adding it as a web-app on my webpage?  

But is it the same type? Does your Java application somehow depend on something the Java JDK that the RE doesn't have?

 

And to get it on a web-page: http://www.simplehtmlguide.com/javaapplets.php

 

12 minutes ago, Claryn said:

Yes, the development process is what I'd like to study. I understand that I would need a client side and a server, but there HAS to be someone that made a generic one already, that will handle applications written in X,Y and Z? 

HTML is generic enough now that all you need is a plug-in for whatever web-supported app you have, you don't need to do anything special other than use the correct tag, attributes, and point it to a file on the server. Web servers also don't really care what file it is, as long as the client requests the correct path.

 

However I'll give you some tidbits here: you shouldn't be developing the application before you can verify you have a way of deploying it first. Make a "Hello World!" program and attempt to deploy it. If your tools don't work, you can't expect to get very far.

Link to comment
Share on other sites

Link to post
Share on other sites

1 minute ago, M.Yurizaki said:

But is it the same type? Does your Java application somehow depend on the Java JDK that the RE doesn't have?

 

And to get it on a web-page: http://www.simplehtmlguide.com/javaapplets.php

 

HTML is generic enough now that all you need is a plug-in for whatever web-supported app you have, you don't need to do anything special other than use the correct tag, attributes, and point it to a file on the server. Web servers also don't really care what file it is, as long as the client requests the correct path.

 

However I'll give you some tidbits here: you shouldn't be developing the application before you can verify you have a way of deploying it first. Make a "Hello World!" program and attempt to deploy it. If your tools don't work, you can't expect to get very far.

So what should I look into if I wanted to create web-apps in Java or say C++, or how to start working on deploying working apps as web-apps? 

 

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

 

Link to comment
Share on other sites

Link to post
Share on other sites

6 minutes ago, Claryn said:

So what should I look into if I wanted to create web-apps in Java or say C++, or how to start working on deploying working apps as web-apps?

First get your apps to run locally on another computer.

 

However, that's running with the caveat that I'm not familiar with the Java ecosystem all that much. I know you can download JAR files off websites if they run it on the web page and sometimes they'll run locally, assuming the application isn't trying to talk to a server or something.

Link to comment
Share on other sites

Link to post
Share on other sites

Well, the least I can do is describe to you the software development process. It has many variations, but generally they follow the same thing:

  • Come up with some idea. What do you want to create?
  • Figure out if this is really within the scope of your skills. For example, if you just compiled a "Hello world" program and you're 20 pages into your first programming book, you're not ready to create something like Flappy Bird.
  • What do you want to create it with? Sometimes you go with a language you already know and are comfortable with. Other times you want to apply a language you're learning.
  • When you have your language, make sure you can actually create something with it. Create a "sanity check" program (which the Hello World program is always a good one).
  • Figure out what your application must do. These are requirements. They're also testable and proves your program works as intended, more or less.
  • Start designing your application to meet these requirements. Review your design. Make sure it logically makes sense.
  • Once you have your design, implement it.
  • After you've implemented the design, test it.

The different paradigms of software development mostly deal with how often to go through this cycle. Some cycles want everything. Other cycles will implement the next feature as soon as one is thought of and agreed upon.

 

Now if you want to read about musings on the development process, that's what books and blogs are for.

Link to comment
Share on other sites

Link to post
Share on other sites

22 minutes ago, M.Yurizaki said:

Well, the least I can do is describe to you the software development process that has many variations, but generally they follow the same thing:

  • Come up with some idea. What do you want to create?
  • Figure out if this is really within the scope of your skills. For example, if you just compiled a "Hello world" program and you're 20 pages into your first programming book, you're not ready to create something like Flappy Bird.
  • What do you want to create it with? Sometimes you go with a language you already know and are comfortable with. Other times you want to apply a language you're learning.
  • When you have your language, make sure you can actually create something with it. Create a "sanity check" program (which the Hello World program is always a good one).
  • Figure out what your application must do. These are requirements. They're also testable and proves your program works as intended, more or less.
  • Start designing your application to meet these requirements. Review your design. Make sure it logically makes sense.
  • Once you have your design, implement it.
  • After you've implemented the design, test it.

The different paradigms of software development mostly deal with how often to go through this cycle. Some cycles want everything. Other cycles will implement the next feature as soon as one is thought of and agreed upon.

 

Now if you want to read about musings on the development process, that's what books and blogs are for.

I am aware of most of the development process here. The part of the process that I want to learn more about is the one where you figure out which language or technology to use, and then the implementation and deployment of it - mostly deployment. Im in my second year at Uni., and my main subject at the international high-school program I followed was Computer Science, using Java learning OOP. 

I have made smaller projects for myself as practice, but I never get to the step where I can make it usable. I always finish testing my console-application that is relatively complex, and then it stops - because I dont know where to move from there. And as you said, I believe a big part of the problem there is that I didnt give deployment any thought before I began implementing the application. 

 

Its the small things, like making a simple C++ desktop application compatible with Linux and Windows. How do I install it properly using a .exe file in Windows, rather than just launching it directly every time? Yes, I know that installation is maybe no necessary for the types of applications that are in my scope, but knowing how to do it is a skill I want to learn. 

 

What I really want from this is a pointer in the direction that I should be headed. What kind of resources will help me grasp all of this? What should I be looking at? What is relevant to learn here? For instance, I dont want to learn how to configure an Apache server or create advanced JavaScript programs that create some custom backend server or client. I just want simple tools that I can use to easily integrate simple applications in. 

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

 

Link to comment
Share on other sites

Link to post
Share on other sites

26 minutes ago, Claryn said:

I am aware of most of the development process here. The part of the process that I want to learn more about is the one where you figure out which language or technology to use, and then the implementation and deployment of it - mostly deployment. Im in my second year at Uni., and my main subject at the international high-school program I followed was Computer Science, using Java learning OOP. 

I need to correct myself. You should figure out what you want your application to do before figuring out the technologies you need for it. It will help immensely pare down what options are out there to something that works.

 

Selecting the language or technology involves research. That's it. You go out there, figure out what others are using, what resources it has in case you get stuck or something, or what the technology does for you. It's very similar to selecting parts for a computer. You don't just select a Core i7-6950X because it's the most whizzbang part. You do research on what the processors in the field can do. You weigh their pros and cons. Then you make a selection based on what you think works best.

 

If I wanted to make a game, I figure out what languages I can use for games. What API is available to me. Any frameworks I can use. I might go ask a few people in my circle of developer contacts or brave the internet. Gather information about the subject.

 

As an example of what I did, I wanted to create the full stack of a website. This means making the client and server. I looked around, asked a friend or two, and landed on Node.JS for the server back-end after some research on it. The front-end I knew had to be HTML, CSS, and JavaScript, but there are plenty of JavaScript libraries to help ease front-end development. Ultimately I chose what I did because it consolidates what I have to learn. I already knew HTML and CSS and I had some JavaScript experience. And since Node.JS is JavaScript, I don't have to learn anything else.

 

Quote

I have made smaller projects for myself as practice, but I never get to the step where I can make it usable. I always finish testing my console-application that is relatively complex, and then it stops - because I dont know where to move from there. And as you said, I believe a big part of the problem there is that I didnt give deployment any thought before I began implementing the application. 

 

Its the small things, like making a simple C++ desktop application compatible with Linux and Windows. How do I install it properly using a .exe file in Windows, rather than just launching it directly every time? Yes, I know that installation is maybe no necessary for the types of applications that are in my scope, but knowing how to do it is a skill I want to learn. 

Packaging up an application for distribution is likely the least of your worries. I'm sure there are other tools that can take your application and what it needs and package it up as an installer. Like you can go over this list for Windows: http://www.techrepublic.com/blog/five-apps/five-apps-for-creating-installation-packages/

 

Quote

What I really want from this is a pointer in the direction that I should be headed. What kind of resources will help me grasp all of this? What should I be looking at? What is relevant to learn here? For instance, I dont want to learn how to configure an Apache server or create advanced JavaScript programs that create some custom backend server or client. I just want simple tools that I can use to easily integrate simple applications in. 

You can find web hosts that can set up the server environment for you, but you still have to create the web pages some how (which there are plenty of WYSIWYG editors). But it would be prudent to understand and learn how the full-stack of a web application works because if something goes wrong, you'll be scratching your head and be at the mercy of people who might know the answer to your problems. It would be like asking how to service Linux without digging into the command line. You can probably get away with "easy mode" distributions, but it would be to your benefit to learn the terminal because chances are if you have a problem, someone's going to give you a terminal command to run.

 

But really, the pointer in the direction learning all of this? To be frank: knowing how to use Google. I found the website that lists programs for creating installer packages by typing in "installer package tool"

Link to comment
Share on other sites

Link to post
Share on other sites

I don't know exactly what you plan to do, but if you're ok with using Python, Django is a good option.

It has good tutorials on Mozilla Developer Network: https://developer.mozilla.org/docs/Learn

The Django tutorial starts from the beginning and takes you all the way to deployment.

Link to comment
Share on other sites

Link to post
Share on other sites

8 hours ago, noahdvs said:

I don't know exactly what you plan to do, but if you're ok with using Python, Django is a good option.

It has good tutorials on Mozilla Developer Network: https://developer.mozilla.org/docs/Learn

The Django tutorial starts from the beginning and takes you all the way to deployment.

This is something I have been looking for yes - a tool or framework that makes it easier to deploy a web-application. 

 

I am not very fond of Python, do you know of any similar frameworks for C++?
Would Ruby with Ruby on Rails be something similar to Django? (I have no experience in Ruby, so Im just asking)

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

 

Link to comment
Share on other sites

Link to post
Share on other sites

22 hours ago, Claryn said:

Hi.

 

I am currently a Computer Science student, and as everyone else studying computer science, we have different courses in Java, Python,  C++, you name it. All these courses have these academic exercises that are supposed to teach us how programming works - how to solve problems. The only problem is that none of the tasks we are assigned feel valuable. Sure, I made this generic application that some professor came up with, because it involves some aspects of a language or framework that is part of our syllabus, but it is utterly useless and teaches us nothing about how to create a proper application that someone would find useful.

 

I checked the resume of most of the professors, and none of them has had a real programming job. Most of them never left campus, and is not teaching us how to be something they never were.

 

Now what I would like are some real applications, that are not too complex or big, where you can study the source-code, and see every detail of how it was developed. I think that just studying a real, proper project is way better than implementing all the different sorting algorithms in language Y, because it doesnt teach you shit about how a proper application is started, made, or finished. 

What year are you in school? Have you taken any classes like Discrete Mathematics? What school is it (so I can look up the curriculum)

ENCRYPTION IS NOT A CRIME

Link to comment
Share on other sites

Link to post
Share on other sites

7 hours ago, Claryn said:

This is something I have been looking for yes - a tool or framework that makes it easier to deploy a web-application. 

 

I am not very fond of Python, do you know of any similar frameworks for C++?
Would Ruby with Ruby on Rails be something similar to Django? (I have no experience in Ruby, so Im just asking)

People generally use garbage collected languages for web development because it's harder to write secure software in C/C++. I don't know much about Ruby, but maybe. Just Google "X web framework" where X is a language you want to use.

Link to comment
Share on other sites

Link to post
Share on other sites

I skimmed through this thread, but I'm not entirely sure what you're looking for?

 

You say that you want to make some real applications, that's great! But you need to figure out the scope of the application that you're making. Do you want to make a website, web app, mobile app, or desktop app? All them require the use of different tools, and all of them have optimal tools to be used for them (for example, you could make a desktop app in C/C++, but chances are it would be easier to just make it in C# or Java). 

 

The best way to get a glimpse of what goes into "building a real app" is to go to a hackathon or do a side project. If you need some ideas, here's some lists: http://livingliferichly.com/epic-list-of-side-project-ideas-for-programmers/

15" MBP TB

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

Link to comment
Share on other sites

Link to post
Share on other sites

 

22 hours ago, Claryn said:

snip

You need to understand that a CS degree is not meant to make you a software developer, so don't expect it to. CS is a very large field that covers both programming and non-programming aspects.

 

If you have the opportunity, do internships. There's no better way to get industry and software development experience before you finish your degree. It's worth pushing your graduation date for an internship (in my opinion).

 

22 hours ago, Claryn said:

I think that just studying a real, proper project is way better than implementing all the different sorting algorithms in language Y, because it doesnt teach you shit about how a proper application is started, made, or finished. 

A lot of companies (including the big ones like Google, Microsoft, Facebook, etc) do data structure & algorithm focused interviews, so be sure to keep that as a high priority if you want to be able to get with those companies.

 

 

There's so many places to find advice online for getting internships, getting started with open source contributions, conquoring the interview, etc so search around. Google. Check useful subreddits (like r/learnprogramming/ and r/cscareerquestions/). Glassdoor Interviews. etc

Link to comment
Share on other sites

Link to post
Share on other sites

23 hours ago, Claryn said:

I am currently a Computer Science student, ....

1

Mind if I ask an off topic question?

I am thinking to go back to university and study CS too. I am 30 years now old but I am a bit scared of the math. I like math and have no problem of learning it but I am a bit concerned that I am too stupid for that kind of math because it is higher ones that I was used to. How do you think about the math?

 

Also can you recommend CS?

 

Thank you very much and greetings from Germany.

Link to comment
Share on other sites

Link to post
Share on other sites

31 minutes ago, madknight3 said:

If you have the opportunity, do internships. There's no better way to get industry and software development experience before you finish your degree. It's worth pushing your graduation date for an internship (in my opinion).

Just going to parrot this as well, since an internship is an amazing way to understand the tools that you are trying to get your head around.

I didn't know much of anything about the deploying side, since you are right that its not a consideration at Uni, you are doing the source code and your lecturer needs that to check your code, so you don't need to consider it.

On placement, you are building and maintaining real applications and web sites. I got to see how the website was deployed and the tools and setup that went into it, and similarly for the desktop applications. 

 

I know in the UK at least, most decent Comp Sci unis have a "Comp Sci with Industrial Placement" degree, which is a 4 year course with the 3rd year being on placement. 

CPU: 6700k GPU: Zotac RTX 2070 S RAM: 16GB 3200MHz  SSD: 2x1TB M.2  Case: DAN Case A4

Link to comment
Share on other sites

Link to post
Share on other sites

18 minutes ago, Teddy07 said:

Mind if I ask an off topic question?

I am thinking to go back to university and study CS too. I am 30 years now old but I am a bit scared of the math. I like math and have no problem of learning it but I am a bit concerned that I am too stupid for that kind of math because it is higher ones that I was used to. How do you think about the math?

 

Also can you recommend CS?

 

Thank you very much and greetings from Germany.

CS is technically the study of algorithms and such. So there's going to be a lot of math involved.

 

I graduated as a Computer Engineer, and there was a lot of math involved, but most of the hard stuff was from the EE side of my major.

Link to comment
Share on other sites

Link to post
Share on other sites

1 hour ago, straight_stewie said:

What year are you in school? Have you taken any classes like Discrete Mathematics? What school is it (so I can look up the curriculum)

Second year. I have done a courses in Discrete Mathematics, Calculus (one course in "advanced calculus", one in multi-dimensional, and one in complex calculus) and linear algebra. 

1 hour ago, Blade of Grass said:

snip

What I want are some resources that will help me understand where to start looking when it comes to real life projects. Your link seems like a good place to get ideas! Id also love some recommendations for different frameworks for different languages like Rails for Ruby, Django for Python etc. 

44 minutes ago, madknight3 said:

 

You need to understand that a CS degree is not meant to make you a software developer, so don't expect it to. CS is a very large field that covers both programming and non-programming aspects.

 

If you have the opportunity, do internships. There's no better way to get industry and software development experience before you finish your degree. It's worth pushing your graduation date for an internship (in my opinion).

 

A lot of companies (including the big ones like Google, Microsoft, Facebook, etc) do data structure & algorithm focused interviews, so be sure to keep that as a high priority if you want to be able to get with those companies.

I am aware of that, and I love the other aspects as well, like digital circuitry and electrical engineering, but I want to start looking at resources that will help me become a software engineer. 

I am currently looking into getting internships, but its not always easy. Most firms want to see personal projects that have been deployed, so its almost like a "chicken and the egg" problem. 

Im not saying that I dont find any values in knowing data strucutres and algorithm construction, I just want to start looking at software development as well. I have had 2 courses in algorithms and data structures that are quite advanced.

17 minutes ago, Teddy07 said:

Mind if I ask an off topic question?

I am thinking to go back to university and study CS too. I am 30 years now old but I am a bit scared of the math. I like math and have no problem of learning it but I am a bit concerned that I am too stupid for that kind of math because it is higher ones that I was used to. How do you think about the math?

 

Also can you recommend CS?

 

Thank you very much and greetings from Germany.

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. 

That's my two cents at the matter at least, from the perspective of my Uni's courses. 

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

 

Link to comment
Share on other sites

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

×