11 answers
Asked
2357 views
What are some classes to take for becoming a software engineer?
I've taken all the classes my highschool offers for software engineering and want to know what other classes I can take in college to become a software engineer.
#software
#coding
Login to comment
11 answers
Updated
David’s Answer
Computer Science: in college you will learn about data structures, object orientation (and other abstractions), and algorithms. Learning how to apply the best solution to the problem is the key to becoming a good programmer.
Electrical engineering: These classes have a high correlation to the underlying hardware that runs the computer. Speed of light and the other physical limitations help you understand how engineering applies to software development.
Math: this is where you learn to think in the abstractions that enable your mind to grasp problems which we solve with computer technologies. The whole of computer engineering is 100% man made so really anything is possible.
Really at some point you'll learn how to do practical software development too, which includes
- building code in a group with tools like bitbucket
- testing the solution (with practical test cases and designs)
- designing the solution (with end user feedback loops, and frequent checkpoints)
Electrical engineering: These classes have a high correlation to the underlying hardware that runs the computer. Speed of light and the other physical limitations help you understand how engineering applies to software development.
Math: this is where you learn to think in the abstractions that enable your mind to grasp problems which we solve with computer technologies. The whole of computer engineering is 100% man made so really anything is possible.
Really at some point you'll learn how to do practical software development too, which includes
- building code in a group with tools like bitbucket
- testing the solution (with practical test cases and designs)
- designing the solution (with end user feedback loops, and frequent checkpoints)
Updated
Adam’s Answer
Learn any type of framework. Linkedin Learning and Udemy would be a good place to go and find out if this is what you want to do. here you will be able to learn the frameworks and understand if you would like to invest in a formal education.
Updated
Yijing (Jenna)’s Answer
I am not sure what classes that you have already taken and where are your interests, here are some core classes that I would recommend:
- Programming languages
- Operating Systems
- Network
- Cyber security
- Data structure and algorithms
- Software Engineering
- User Experience Design
- Databases
- Architecture
- Calculus
- Linear Algebra
- Probability and Statistics
On top of this, I would generally recommend CS students to take a minor so that they can have some industry domain knowledge.
- Programming languages
- Operating Systems
- Network
- Cyber security
- Data structure and algorithms
- Software Engineering
- User Experience Design
- Databases
- Architecture
- Calculus
- Linear Algebra
- Probability and Statistics
On top of this, I would generally recommend CS students to take a minor so that they can have some industry domain knowledge.
this answer looks most similar to me
Vinit Goyal
Updated
Hristo’s Answer
There are a ton of free resources online that can teach you about fundamental topics related to software engineering, many of them lectures from actual classes from prestigious schools. Exposing yourself to that information early can make your education much more efficient as you move in to the college phase. You can even find full breakdown of CS and SW eng. degrees and links to access the information for each class for free (just search on YouTube).
Use all these online resources and apply what you learn to projects you build, this will reinforce what you learn and help you really understand it as well as develop practical software building skills.
Use all these online resources and apply what you learn to projects you build, this will reinforce what you learn and help you really understand it as well as develop practical software building skills.
Updated
Kiersten’s Answer
Hi Connor! What classes you will need to take will depend greatly on which direction you want to take your software engineering career in. Don't feel like you have to pick one and stick with it the rest of your life - you can always change. Get your Bachelor's degree in one, and hey, if you don't like that particular slant, then try another! Many areas of computer science, as I'm sure you know, are vastly different and will work with different tools, processes, and the way you interact with colleagues. So! That being said, where can you take this?
You'll need some basics - maths, mainly. Calculus will almost definitely be required, along with statistics. Physics, chemistry, and other sciences will be a plus if you want to take your career somewhere very specific - say, for example, you want to take physics if you want to be an unmanned aircraft programming engineer, or you'll want to take biology if you want to work for a hospital. A basic working knowledge of what your colleagues will know will be mighty helpful in friendly and exploratory conversations in job seeking later down the road.
If you want to go with straight programming, you'll want to pick a language that you work in for most if not all of your degree. You want one language that's your home base, that you're very familiar with. I chose C++, but I would do a little research as to which languages might jump out to you. Don't shy away from "old" languages like COBOL and Assembler, either - actually, knowing how to code in "old" languages make you a hot commodity to big companies with large code bases that haven't changed much in 20 years. Once you've picked a "home" language (or, often, your degree program will choose it for you), then definitely study 3-4 other languages briefly. Often, languages are constructed based off one another, much like spoken languages, and once you know the structure of one well, it's much easier to see similarities in other languages and pick them up quickly.
If you want to get into cyber security, then you'll want to take as many cryptography classes as you can take. Also, you'll want to get your Ethical Hacker and White Hat certs. Having a hobby of solving puzzles won't hurt either. The more languages you know here, the better, but the more specifically fast and light languages you know, the faster you'll go.
If you want to go into more of a journalism. writing, web design, or something similar route, then I would take classes on social media engineering (It never hurts to know how to get more clicks). You'll want to learn about analytics (you can get your Google Analytics certification now, it lasts forever), HTML, CSS, JavaScript, Java, and other web languages specifically. Learn both how to build a website from a template, like Wordpress, but also from the ground up. You'll need to understand how a network and the internet work on a basic level, starting from the hardware (servers, routers, modems, the like) on up.
Whew, that's a lot! but here are some things you can do now:
Research and think about what your secondary interests are. Literally everyone uses computers now, so who do you want to work with? What areas interest you enough that you could stand to learn more about them as well as computer science?
Next, find if there are any certifications you can get in that area right now, from learning cataloguing for hospital systems to Googe Analytics.
Take a wide variety of basic language classes. You may find you HATE one area of study you thought you would like. Better to find that our now instead of two weeks into your new corporate job.
Take math classes, and a smattering of other sciences.
Don't feel stuck! Just because you spent three years learning how to maintain a database of forest service GPS coordinates of tree species, doesn't mean you can't translate that into how to program a drone to deliver Amazon packages.
You'll need some basics - maths, mainly. Calculus will almost definitely be required, along with statistics. Physics, chemistry, and other sciences will be a plus if you want to take your career somewhere very specific - say, for example, you want to take physics if you want to be an unmanned aircraft programming engineer, or you'll want to take biology if you want to work for a hospital. A basic working knowledge of what your colleagues will know will be mighty helpful in friendly and exploratory conversations in job seeking later down the road.
If you want to go with straight programming, you'll want to pick a language that you work in for most if not all of your degree. You want one language that's your home base, that you're very familiar with. I chose C++, but I would do a little research as to which languages might jump out to you. Don't shy away from "old" languages like COBOL and Assembler, either - actually, knowing how to code in "old" languages make you a hot commodity to big companies with large code bases that haven't changed much in 20 years. Once you've picked a "home" language (or, often, your degree program will choose it for you), then definitely study 3-4 other languages briefly. Often, languages are constructed based off one another, much like spoken languages, and once you know the structure of one well, it's much easier to see similarities in other languages and pick them up quickly.
If you want to get into cyber security, then you'll want to take as many cryptography classes as you can take. Also, you'll want to get your Ethical Hacker and White Hat certs. Having a hobby of solving puzzles won't hurt either. The more languages you know here, the better, but the more specifically fast and light languages you know, the faster you'll go.
If you want to go into more of a journalism. writing, web design, or something similar route, then I would take classes on social media engineering (It never hurts to know how to get more clicks). You'll want to learn about analytics (you can get your Google Analytics certification now, it lasts forever), HTML, CSS, JavaScript, Java, and other web languages specifically. Learn both how to build a website from a template, like Wordpress, but also from the ground up. You'll need to understand how a network and the internet work on a basic level, starting from the hardware (servers, routers, modems, the like) on up.
Whew, that's a lot! but here are some things you can do now:
Kiersten recommends the following next steps:
Updated
Tania’s Answer
Coursera has a lot of very interesting courses that can help you grow your skills!
Updated
David’s Answer
STEPS TO BECOMING A SOFTWARE ENGINEER
Software engineering is an ever-changing profession, one that adapts as new technologies are developed. Because of its shifting nature, there are multiple entry points into the profession. Although no single path to becoming a software engineer exists, the steps below outline the general path to employment.
GET AN EDUCATION
Completing a formal education is the first step toward becoming a software engineer. Prospective students can select from both traditional and nontraditional training programs to gain the education necessary to pursue entry-level positions. Some options include:
ASSOCIATE DEGREE (TWO YEARS).
Although employers typically prefer candidates with a four-year degree, an associate degree can open the door to entry-level jobs in the field. Students may choose to pursue majors in several related areas, such as software engineering technology or software systems engineering. Curriculum focuses on the core principles of software engineering, programming languages, and modern approaches to software development.
BACHELOR’S DEGREE (FOUR YEARS).
A bachelor’s degree in computer science, or a related field, is the traditional minimum degree preferred by employers. Bachelor’s degree programs expose students to a broader curriculum, one that provides a foundation in mathematics and computer science. Students develop a comprehensive understanding of programming, software architecture, and software testing. They may also take specialized courses in application areas, such as networking or embedded systems.
CODING BOOTCAMP (8 TO 12 WEEKS).
Coding bootcamps are a relatively new educational path for aspiring software engineers or developers. These programs typically last between eight and 12 weeks and place students into a hands-on, immersive learning environment. Upon graduation, students should be ready for entry-level careers as software engineers or developers.
Completing an internship provides students with real world experience. Technology companies may offer internships for students with a bachelor’s or master’s degree who are seeking to expand their skills in specific areas, such as Java, XML or SQL. Internships typically last between three and six months and allow students to work on specific projects or products related to their skills.
PURSUE A SPECIALIZATION
Generally speaking, there are two specializations within software engineering: applications and software/systems development. However, distinct areas of practice exist within each of these areas. Software engineers may choose to become experts in a single programming language or type of development. Below is a list of example specialty areas to consider:
Web development DevOps Mobile development Technical stack (e.g., Python, Ruby)4PURSUE ENTRY-LEVEL CAREER OPPORTUNITIES
After earning a computer science or related degree or completing a bootcamp program, the next step is to seek out entry-level employment. Because of the demand, software engineering has been rated one of the best entry-level careers available, according to Forbes. Although the dream job may be at Google, prospective software engineers can start with a small, local job hunt because, in the profession, experience is a critical commodity for career advancement.
GET CERTIFIED
Although some certifications have lost their luster, they remain an integral part of the tech industry. Software engineering is precise and technical, and gaining certification verifies an applicant’s knowledge and abilities. Along with experience, certification can improve a person’s marketability in an increasingly competitive marketplace. Certifications are available from technology vendors (e.g., Microsoft, Cisco and Oracle) as well as professional organizations (e.g., IEEE) and are tailored to specific areas of practice.
ATTEND CONFERENCES
Innovation drives change. That means software engineers need to stay abreast of the latest developments in both the general profession and their specialty. Attending conferences is a great way to network with other engineers and learn about new products, business practices, and technologies. Popular conferences for software engineers include the International Conference on Software Engineering and the International Conference on Automated Software Engineering.
EARN A GRADUATE DEGREE
A graduate degree offers the opportunity to qualify for management and leadership positions in the industry. In addition, there is more to engineering than just programming. Software engineering calls upon interdisciplinary skills such as critical thinking, cost analysis and project management — skills that can be enhanced in a master’s program in computer science, computer engineering, information science or software engineering Computer Science classes.
Software engineering is an ever-changing profession, one that adapts as new technologies are developed. Because of its shifting nature, there are multiple entry points into the profession. Although no single path to becoming a software engineer exists, the steps below outline the general path to employment.
GET AN EDUCATION
Completing a formal education is the first step toward becoming a software engineer. Prospective students can select from both traditional and nontraditional training programs to gain the education necessary to pursue entry-level positions. Some options include:
ASSOCIATE DEGREE (TWO YEARS).
Although employers typically prefer candidates with a four-year degree, an associate degree can open the door to entry-level jobs in the field. Students may choose to pursue majors in several related areas, such as software engineering technology or software systems engineering. Curriculum focuses on the core principles of software engineering, programming languages, and modern approaches to software development.
BACHELOR’S DEGREE (FOUR YEARS).
A bachelor’s degree in computer science, or a related field, is the traditional minimum degree preferred by employers. Bachelor’s degree programs expose students to a broader curriculum, one that provides a foundation in mathematics and computer science. Students develop a comprehensive understanding of programming, software architecture, and software testing. They may also take specialized courses in application areas, such as networking or embedded systems.
CODING BOOTCAMP (8 TO 12 WEEKS).
Coding bootcamps are a relatively new educational path for aspiring software engineers or developers. These programs typically last between eight and 12 weeks and place students into a hands-on, immersive learning environment. Upon graduation, students should be ready for entry-level careers as software engineers or developers.
Completing an internship provides students with real world experience. Technology companies may offer internships for students with a bachelor’s or master’s degree who are seeking to expand their skills in specific areas, such as Java, XML or SQL. Internships typically last between three and six months and allow students to work on specific projects or products related to their skills.
PURSUE A SPECIALIZATION
Generally speaking, there are two specializations within software engineering: applications and software/systems development. However, distinct areas of practice exist within each of these areas. Software engineers may choose to become experts in a single programming language or type of development. Below is a list of example specialty areas to consider:
Web development DevOps Mobile development Technical stack (e.g., Python, Ruby)4PURSUE ENTRY-LEVEL CAREER OPPORTUNITIES
After earning a computer science or related degree or completing a bootcamp program, the next step is to seek out entry-level employment. Because of the demand, software engineering has been rated one of the best entry-level careers available, according to Forbes. Although the dream job may be at Google, prospective software engineers can start with a small, local job hunt because, in the profession, experience is a critical commodity for career advancement.
GET CERTIFIED
Although some certifications have lost their luster, they remain an integral part of the tech industry. Software engineering is precise and technical, and gaining certification verifies an applicant’s knowledge and abilities. Along with experience, certification can improve a person’s marketability in an increasingly competitive marketplace. Certifications are available from technology vendors (e.g., Microsoft, Cisco and Oracle) as well as professional organizations (e.g., IEEE) and are tailored to specific areas of practice.
ATTEND CONFERENCES
Innovation drives change. That means software engineers need to stay abreast of the latest developments in both the general profession and their specialty. Attending conferences is a great way to network with other engineers and learn about new products, business practices, and technologies. Popular conferences for software engineers include the International Conference on Software Engineering and the International Conference on Automated Software Engineering.
EARN A GRADUATE DEGREE
A graduate degree offers the opportunity to qualify for management and leadership positions in the industry. In addition, there is more to engineering than just programming. Software engineering calls upon interdisciplinary skills such as critical thinking, cost analysis and project management — skills that can be enhanced in a master’s program in computer science, computer engineering, information science or software engineering Computer Science classes.
This is really great detailed response. I will also add AWS, Azure etc. cloud related certifications as Cloud computation is becoming a future now and think about further years ahead in future from the perspective of the demand of you skills when you go after any specialized skills!
Nimesh Patel
James Constantine Frangos
Consultant Dietitian & Software Developer since 1972 => Nutrition Education => Health & Longevity => Self-Actualization.
6342
Answers
Gold Coast, Queensland, Australia
Updated
James Constantine’s Answer
Dear Connor,
Here's your answer:
Core Courses in Computer Science:
1. Introduction to Computer Science: This foundational course introduces you to the basics of programming, algorithms, and data structures.
2. Data Structures and Algorithms: This course offers an in-depth exploration of how data is structured and manipulated efficiently.
3. Computer Architecture: Gaining a grasp of how computers function at the hardware level can be advantageous for software engineers.
4. Operating Systems: This course is vital as it teaches how operating systems allocate resources and interact with software.
5. Software Engineering: This course emphasizes the principles and practices of collaborative software development.
Mathematics Courses:
1. Discrete Mathematics: This course is key to understanding the theoretical underpinnings of computer science.
2. Calculus: Many computer science programs require calculus due to its role in algorithms and modeling.
3. Linear Algebra: This course is beneficial for understanding graphics, machine learning, and other advanced software engineering topics.
Elective Courses:
1. Database Management Systems: Knowing how data is stored and retrieved efficiently is crucial for many software engineering positions.
2. Web Development: Gaining knowledge about web technologies is valuable as numerous software engineers work on web applications.
3. Mobile App Development: With the increasing use of mobile devices, understanding mobile app development can be beneficial.
Top 3 Trusted Sources Used for this Answer:
1. IEEE Computer Society: This society offers valuable insights into the latest trends and best practices in computer science education.
2. Association for Computing Machinery (ACM): ACM provides a plethora of resources on computer science education, including suggested courses for future software engineers.
3. Coursera: Coursera provides online courses from leading universities that can complement traditional college classes for aspiring software engineers.
These sources were used to ensure the information provided about the necessary classes for becoming a software engineer is accurate and relevant.
May God bless you!
James Constantine Frangos.
Here's your answer:
Core Courses in Computer Science:
1. Introduction to Computer Science: This foundational course introduces you to the basics of programming, algorithms, and data structures.
2. Data Structures and Algorithms: This course offers an in-depth exploration of how data is structured and manipulated efficiently.
3. Computer Architecture: Gaining a grasp of how computers function at the hardware level can be advantageous for software engineers.
4. Operating Systems: This course is vital as it teaches how operating systems allocate resources and interact with software.
5. Software Engineering: This course emphasizes the principles and practices of collaborative software development.
Mathematics Courses:
1. Discrete Mathematics: This course is key to understanding the theoretical underpinnings of computer science.
2. Calculus: Many computer science programs require calculus due to its role in algorithms and modeling.
3. Linear Algebra: This course is beneficial for understanding graphics, machine learning, and other advanced software engineering topics.
Elective Courses:
1. Database Management Systems: Knowing how data is stored and retrieved efficiently is crucial for many software engineering positions.
2. Web Development: Gaining knowledge about web technologies is valuable as numerous software engineers work on web applications.
3. Mobile App Development: With the increasing use of mobile devices, understanding mobile app development can be beneficial.
Top 3 Trusted Sources Used for this Answer:
1. IEEE Computer Society: This society offers valuable insights into the latest trends and best practices in computer science education.
2. Association for Computing Machinery (ACM): ACM provides a plethora of resources on computer science education, including suggested courses for future software engineers.
3. Coursera: Coursera provides online courses from leading universities that can complement traditional college classes for aspiring software engineers.
These sources were used to ensure the information provided about the necessary classes for becoming a software engineer is accurate and relevant.
May God bless you!
James Constantine Frangos.
Updated
Blaine’s Answer
Hi Connor,
Depending on the schools and specific degree you’re interested in, there will be a formal curriculum and path to follow. This will typically include a mix of required courses and some electives.
I received a Bachelor of Science in Computer Science (BSCS) degree a number of years ago and my curriculum included a mix of core classes such as calculus, physics, electrical systems and of course a mix of various programming languages, data structure design and database design.
The programming courses, while not all structured the same, typically consist of a lecture and a lab, where you have the opportunity to work on projects and put into practice what you learn. While Java, Ruby, Python and others were not around when I was in school, learning these web application frameworks and languages through a college course or on your own would never be a bad idea.
I hope this helps.
Depending on the schools and specific degree you’re interested in, there will be a formal curriculum and path to follow. This will typically include a mix of required courses and some electives.
I received a Bachelor of Science in Computer Science (BSCS) degree a number of years ago and my curriculum included a mix of core classes such as calculus, physics, electrical systems and of course a mix of various programming languages, data structure design and database design.
The programming courses, while not all structured the same, typically consist of a lecture and a lab, where you have the opportunity to work on projects and put into practice what you learn. While Java, Ruby, Python and others were not around when I was in school, learning these web application frameworks and languages through a college course or on your own would never be a bad idea.
I hope this helps.
Updated
Kevin’s Answer
Being a good software engineer starts with having a solid understanding of the fundamentals so if you haven't taken these classes already, Data Structures and Databases are great to begin with. Once you have the fundamentals down, then you can think about specializing in specific areas of interest such as web development, machine learning, and video game development so the courses you will need to take will vary based on what you want to focus on. And it's absolutely okay if you aren't sure what area to focus on as most software engineers don't decide on that until they've been working in the field for a few years. If you fall in that boat, the best course of action would be to explore multiple courses in different areas and see what you fall in love with!
Updated
Ashley’s Answer
Hi Connor,
Great question! I would look into the electives offered at the university you will be attending or see if a dual enrollment program is available at your local community college. Electives can be a great way to discover what your area of interests and/or strengths are. I recommend using www.freecodecamp.org as well. An additional note is to consider joining an organization dedicated to software engineering or computer science. This is also a great way to network with other students and professionals. Some examples include ACM, IEEE, and SWE (open to all genders).
Great question! I would look into the electives offered at the university you will be attending or see if a dual enrollment program is available at your local community college. Electives can be a great way to discover what your area of interests and/or strengths are. I recommend using www.freecodecamp.org as well. An additional note is to consider joining an organization dedicated to software engineering or computer science. This is also a great way to network with other students and professionals. Some examples include ACM, IEEE, and SWE (open to all genders).