The tech industry seems to have captivated many with its seemingly mystical ways of enhancing everyday life to its ability to cause massive destruction in terms of the sociopolitical threads of society to the dangers of cybercrime. I was not immune to this allure of this world. In fact, I was drawn to it. I wanted to understand it. So I followed this curiosity and have joined the ranks of many as a tech career-changer. As a law school drop out and former paralegal, I was not a likely candidate for this change in pace. However, the challenging work, the potential for using technology for good, and the rising demand for these skills all appealed to me. Before I begin reviewing the Software Engineering program at Arizona State University (ASU) Online, I will quickly recap my exposure to the software field prior to enrolling to give you an idea of my background going into this program.
My Experience Prior to Enrolling at ASU ๐
Before starting on this educational journey I had not taken a formal math course in almost a decade, and I admit I was nervous to dust off any remaining resemblance to math skills-any survivors had likely started collecting cobwebs. My first degree, a B.A. in Psychology and Legal Studies required minimal math. A Psychology Statistics course and Biology 101/102 was the extent of my math/science requirement from what I recall. As for software development, my experience was almost non-existent. As a paralegal, I had written many visa petitions for software engineers which allowed me to become familiar with the names of various tools and technologies as well as the job responsibilities on a very superficial level. As my interest grew, I was able to gain further insight about the field from my friends who had started careers as software engineers. From there, I began teaching myself HTML/CSS using Free Code Camp. Around that same time, I co-founded a non-profit that involved a small-scale web-services business. As part of that business, I helped to create a few websites for small businesses using my self-taught skills in HTML/CSS and some JavaScript.
Why Did I Choose ASU Online? ๐
When deciding which path to take to break into tech, there are three main options: 1) Self-teach; 2 ) Attend a Bootcamp; and 3) Get a degree.
The Self-Taught Route ๐
The pros of being self-taught is that this is the absolute cheapest method to gain entry to the field and requires the least amount of risk. You can effectively self-teach as much or as little as you desire. This means you do not need to quit your day job, and you can narrow in on the areas that interest you. Further, there are plenty of online tools and lecture videos that can get you skills and theoretical knowledge you need (MIT Open CourseWare is just one example). Although these benefits sound appealing, I knew the amount of freedom would translate to a lack of clear direction in my case-especially for a field that is so vast and has endless rabbit holes to enter. It would be very difficult for a novice to gain the needed skills in a way that effectively builds on one another because that requires an understanding of the broader picture. Another negative is that there is no ‘proof’ of your hard work or skills gained in the form of formal certificates. If you look at any job posting for a software engineer, most will require a bachelor’s degree and even more will require a bachelor’s degree in computer science, software engineering, or related. If you wanted to be an IT Professional and obtain the CompTIA certificate then this route is a possibility, but I was strictly looking to develop and maintain code in an engineering capacity so this was quickly crossed off my list. As a caveat, I highly recommend anyone looking to switch careers to tech to first self-teach themselves to some extent. Learn HTML/CSS and watch an introduction to computer science lecture to see if the subject interests you. If it doesn’t, I would stop reading here.
The Bootcamp Route ๐
I don’t know much about this route, but I do know that they have become extremely popular and there are many options out there-some better than others. I know people who have been successful in gaining employment at the conclusion of a Bootcamp. I’m also aware that these Bootcamps tend to be very intense, and it may depend on the specific program whether you can attend full or part-time. It seems to be the consensus that Bootcamps teach very practical skills in order to help you build an impressive portfolio. There are quite a few Bootcamps that even defer your tuition until you get a job in the field which allows this path to feel less risky. But it is good to be aware of the specifics as some camps may either require a flat fee amount or a percentage of your salary for a specified amount of time. I see the value in a Bootcamp for learning technical skills and was seriously considering this option. Ultimately, I was worried that employers wouldn’t see a Bootcamp completion as valuable as a degree and that it would be more difficult to find employment. I was also worried that this was becoming a fad and that there would be more individuals in my position more willing to complete a Bootcamp rather than a degree so my application would fail to stand out.
The Degree Route ๐
I chose to get a degree for three main reasons:
- Because I wanted the math and science background that I was lacking;
- I knew that this field would be constantly changing, and I figured a degree would touch on the theoretical knowledge which could prove more beneficial in the face of changing languages and tools;
- I saw that most job postings for software engineers/software developers required a degree in a related field.
Once I settled on deciding to pursue a degree, I knew that I needed to save costs as much as possible. This led me to researching community colleges in the area to see whether I could take any pre-requisites for a cheaper price tag. Fortunately, I found that the Maricopa Community College District offered associate degrees that transferred directly into both ASU’s Computer Science and Software Engineering degrees. I am convinced that taking a year a Paradise Valley Community College to complete my introduction computer science classes as well as most of my math and science prerequisites was one of the best decisions I made. Not only were the classes significantly cheaper than ASU, but the class sizes were a fraction of ASU allowing me to develop closer ties to my professors. This meant developing a deeper understanding of the material. These classes were not easy by any means, but I did feel more supported at PVCC than I have at ASU. I first decided on ASU out of mere convenience and the school’s solid reputation did not hurt either. I live in Arizona and I initially had planned to do the in person Computer Science program, but then the pandemic hit. That led me to change directions, and I enrolled in the fully online B.S. in Software Engineering program. It is one of the few online engineering programs in the field that is ABET accredited and is well respected in the field.
The Specifics-Courses, Cost, Commitment ๐
The online B.S. in Software Engineering is described on ASU’s website as follows:
In this bachelor’s degree program, you’ll take classes that build the necessary software fundamentals in programming, math and systems management to fully understand and manage how computer systems work. You’ll learn programming languages, how to build code, software program development and important cybersecurity concept. โฆ This degree uses a project-focused curriculum that prioritizes discovery and learning by doing. As a part of this curriculum, you’ll complete software engineering projects during every semester of the program. These projects will give you the opportunity to apply your knowledge, gain hands-on experience and develop teamwork skills.
The program consists of 120 total credit hours or 41 total classes. The classes are typically condensed into a 7.5 week long course, so you only take two classes at any given time if you are a full time student (i.e., 4 classes per semester with 2 in Session A and 2 in Session B). For a resident, a 12 credit semester costs $6,984 whereas a non-resident would pay $8,119 per semester at the time this is written. I should note that there seemed to be many students in my cohort who were already working as software developers or in other full-time roles, so it is possible to take one course and work full time, but keep in mind that most of the software related courses are extremely time intensive as I will further discuss. Personally, I was able to have a part-time job and take 4 courses a semester, but I had very little (if any) free time (especially in the early semesters). My days during school consisted entirely of work, school-work, sleep, repeat. I will go into each course and provide a brief overview. Because I had a prior degree, essentially all of my English and social science classes transferred so my schedule consisted of primarily math, science, or software engineering courses.
Spring 2020 - Paradise Valley Community College (PVCC) ๐
- CSC 110: Introduction to Computer Science - 4 credits
- Math 187: Precalculus - 5 credits
- ECE 102: Engineering Analysis Tools- 2 credits
- ECE103: Engineering Problem-Solving / Design - 2 credits
- BIO 181: General Biology I- 4 credits
The learning curve for programming is a steep hill to overcome. Most of us use computers every day and have no clue how it works-I’ve taken over 10 software engineering classes and part of me still is convinced it is part-magic. All jokes aside, my introduction to computer science class was tough for me. Not only are you learning a new language, syntax and how programs generally run, but you also are learning theories, algorithms, and object-oriented programming basics. My advice to anyone starting out is to consistently reassure yourself that it is okay not to know everything from the start-you won’t. Take it little by little and absorb what you can because it is easy to get overwhelmed. Precalculus was also a bumpy ride, but it was an incredible review before diving in calculus. The two engineering classes were interesting, and we did some fun stereotypical engineering student projects such as competing for the strongest popsicle stick bridge. I enjoyed the biology labs, but this was my second time taking Biology since my credits didn’t transfer so the concepts came more easily to me.
Fall 2020-Paradise Valley Community College (PVCC) ๐
- CSC 120: Digital Design Fundamentals-4 credits
- Math 230: Calculus 2-5 credits
- CSC 205: Object-Oriented Programming- 4 credits
- BIO 182: Biology II-4 credits
From what I remember from Digital Design it was focused on combinational and sequential logic gates among other topics. This was the computer science course that I enjoyed least, but fortunately it may be the course that has been the least relevant. Calculus 2 was more challenging than Calculus 1, but it is also manageable if you put in the time to understand it. Object-Oriented Programming was a continuation of the introduction course touching on core object-oriented principles such as inheritance, aggregation, and polymorphism. The course also went into an introduction on topics such as abstract classes/interfaces, exceptions, arrays/array lists, and some basic algorithms and data structures. Biology II was surprisingly difficult, but it was mostly due to the Professor’s poor course design (i.e. putting between 5โ10 long YouTube video links on a single slide for every slide in a large slide deck and having small details from any given video be on the quiz/tests).
Spring 2021-Paradise Valley Community College (PVCC) ๐
- CSC 230: Computer Organization & Assembly Language-4 credits
- Physics 121: University Physics- 4 credits
- Math 227: Discrete Mathematical Structures-3 credits
- CSC 240: Intro to Different Programming Languages-3 credits
Computer Organization & Assembly Language was shockingly fun for me. This was my first exposure to understanding computer hardware and how computers read instructions. We also covered binary arithmetic, memory, and parallel processors. In addition, our programming assignments were all in assembly language. Compared to Java, I appreciated the procedural nature of this nature and thought it was relatively straightforward. Physics was a typical university physics course. Similar to calculus, I utilized Kahn academy or other online resources to help me through that course. Discrete math is a very different experience compared to Calculus, but it’s relevance to software engineering is more clear in my opinion. In this course, we covered logic and Boolean algebra, set theory, relations, sequences, number and matrix theory, induction, and discrete probability. My introduction to Different Programming Languages was another challenging course that pushed me out of my comfort zone. We were exposed to completing programming assignments in different languages from different paradigms such as C, C++, Scheme, and Prolog. One of the most memorable assignments was programming a battleship game in C. As a requirement for the course, we also created a Linux virtual machine on VirtualBox and had assignments to help us learn bash scripting commands.
Summer 2021-Paradise Valley Community College (PVCC) ๐
- Math 241: Calculus - 4 credits
- Com 100: Intro to Human Communication - 3 credits
Calculus 3 was as difficult as Calculus 2 for me, although I have heard many claim it is easier than Calculus 2. Again, I relied on supplemental online resources to learn the material. At this point, I received my Associate degree in Computer Science as a communication course was the final course I needed to complete that degree.
Fall 2021 at Arizona State University (ASU) ๐
- SER 222: Design Analysis of Data Structures - 3 credits, A Session
- EGR 280: Engineering Statistics - 3 credits, A Session
- SER 334: Operating systems & Networks - 3 credits, B Session
- SER 216: Software Enterprise - 3 credits, B Session
Transitioning to ASU courses this semester felt like getting hit by a truck of constant work and feelings of inadequacy. I was already putting in approximately 35-50 hours of school work each week at PVCC, and I knew ASU would be more challenging than PVCC. According to ASU’s Course Policies, one three credit course of 7.5 weeks should require approximately 18 hours per week. I’m not sure why ASU has not updated this number or given a disclaimer for the Software Engineering program, but I regularly spent over 25โ35 hours a week per course. For Operating Systems, there were a few weeks in a row that would require more than 40 hours per week of work for a single course. I know this because we had to keep track of the hours we worked on our programming assignments. In a given week in Operating Systems, we had two programming assignments (approximately 20 hours each), an exam, two quizzes, and two modules of new material to learn. It was also during this semester that I was in the midst of applying to summer internships as well as maintaining my part-time job. I mention this not to complain, but to bring awareness to the true time commitment this program requires. Since I enrolled, I heard that ASU may have updated some course structures since then due to the large number of complaints.
Although I was grateful for the learning opportunities of the challenging assignments and courses, this presents a problem for students on financial aid needing to go to school full time as well as hold down part-time or even full time work to pay for school. The only advice my advisor/success coach gave me was essentially that this track may not be for me. My advisor later suggested that I should only take one course at a time, which would effectively forfeit any financial aid or scholarships which was not an option for me. Some may call this time commitment slightly unreasonable. I spoke to one student who had to retake Operating Systems at least 3 times. SER222 and SER 334 felt like ‘weed-out’ courses, or a course that separates the students who should continue on from those who may want to reconsider their major. They both consist of very challenging assignments.
Our main focus in SER216 was programming a checkers game in Java and then build on that each weekly iteration. This course also introduced us to JUnit testing, UML diagrams, GUIs, and networking. This course was moderately challenging, but it paid off to put the work hard early to design a solid checkers game so your foundation moving into the next few weeks is strong.
Spring 2022 at Arizona State University (ASU) ๐
- SER 321: Principles of Distributed Software Systems - 3 credits, A Session
- SER 315: Software Enterprise I: Tools and Processes - 3 credits, A Session
- Math 343 Applied Linear Algebra - 3 credits, B Session
- SER 316: Software Enterprise II: Construction - 3 credits, B Session
I’d be lying if I said I was not tempted to quit after the challenging Fall semester. However, I felt more mentally prepared for the workload I’d be facing going into the Spring and was optimistic, and I’m glad I did. SER321 was one of my favorite software engineering courses thus far. The professor that teaches this course is tough, but in my experience her classes teach the most relevant tools and information. Additionally, the grading is set up where if you put in the time and effort (i.e. start assignments early and work consistently), then you should be able to get by with a good grade. The assignments were fun as well as we got to begin creating server-client applications.
Software Enterprise consists of a series of courses. Tools and Processes involved less emphasis on coding and completely revolved around software design using UML diagrams and the associated tools. This class is heavily group project based. Software Construction on the other hand involved working with a large legacy project called “Memoranda”. This project is intentionally a simple calendar application and is intended to be a work in progress. The entire class was revolved around a group project where the team turns the legacy application into an entirely new application that meets certain requirements. For example, our team was assigned to convert the existing application into a bus scheduling system. This class was helpful in terms of gaining experience with the Software Development Lifecycle and working within an Agile framework.
Linear algebra was pretty tough, but if you make it through Calculus then you should be able to get by here too.
Summer 2022 at Arizona State University (ASU) and Software Engineer Internship at Northwestern Mutual ๐
- SER 484 (4XX Elective) - 3 credits
This course is where you can gain credit for an internship. The application process is easy, but you do need to reach out to an advisor and receive approval and complete a form. You can only use this once for an internship, and it does mean you will be paying $2,000 to intern. Fortunately, most internships are paid internships in this field. I applied to internships starting the end of summer 2021. This is where I began to feel as if the path I chose was feasible and worth it. I applied to approximately 60 internship positions between August 2021-November 2021. I was invited to interview for ten of these. I accepted interviews to three and was offered positions at two. The remaining invites to interview were after I accepted a position, and it was in the midst of a particularly busy time of the semester, so I declined to interview further, despite these invites to interview being from larger name companies. I wouldn’t recommend declining any interviews, but I was mentally fried from all the applications.
Fall 2022 at Arizona State University ๐
- SER 401 Computing Capstone I - 3 credits, A/B Session
- SER 415 Software Enterprise: Inception - 3 credits, A Session
- EGR 104 Critical Inquiry in Engineering - 3 credits, B Session
- SER 335 Engineering Secure Software Systems - 3 credits, B Session
Software Enterprise: Inception was probably the easiest and least stressful software class thus far. However, I have heard that ASU is revamping the course to make it more difficult. This class was fun as well because you and a team get to create a product plan given certain requirements and rotate using various tools to build out the product idea/plan such that a team would be able to code and develop the project given your work. To clarify there is no coding in this class, but it covers the inception phase of software development lifecycle.
EGR 104 is meant to be a freshman level course that covers engineering ethics. I personally really enjoyed this course as it involved a lot of research and writing for discussion posts. This is also considered an easier course.
Secure Systems was also one of my favorite classes in the program. The course is still very challenging as it involves pretty dense lecture videos and tricky programming assignments. I found that if you dedicate enough time to the assignments and follow directions closely then you should be able to complete them well. The assignments were fun because they involve using a virtual machine and other tools to simulate “hacking” and making various “attacks”. It covered some important foundation security concepts as well.
The capstone is a required part of the degree where you and a random team get assigned a random project idea that is submitted by sponsors. Sponsors can be anyone from NASA to seemingly any random person who happened to submit a for-profit or non-profit business idea to ASU. The idea is that you and your team work with this sponsor for the entire academic year to develop their idea. In theory, it sounds like a great opportunity, and I was originally excited for this part of the degree. In practice, however, this course has been my least favorite experience at ASU by far. I may need to write a separate post about my personal experience and why I feel this why because the issues I rose with my department chair and professor were elevated to ASU Legal and the Dean’s Office and there has since been a lot of back and forth. To put it briefly, my biggest issue is that I believe there is little to no legal protection for these for-profit projects and students are placed in a potentially vulnerable situation legally if anything were to happen (i.e. lawsuits from the sponsor against the students, lawsuits from future users against the sponsor/application and thus the developers). As students, we are given no built-in support or oversight over any potentially illegal actions that the sponsor asks us to do (either unknowingly or knowingly on the sponsor part) and because students are not legal experts, it may be difficult to know where something crosses the line to illegal. Furthermore, it did not appear from my discussions as if ASU had a robust vetting process in place to thoroughly vet the sponsors to ensure they are legit. I would hope that in the future ASU either removes this course as a requirement or completely overhauls the course design to only ASU sponsored projects.
Spring 2023 at Arizona State University ๐
- SER 402 Computing Capstone II - 3 credits, A/B Session
- IFT 301 Web Programming for HCI - 3 credits, A Session
- SER 322 Database Management - 3 Credits, A Session
- SER 416 Software Enterprise: Project and Process - 3 credits, B Session
…To be continued…
Summer 2023 Software Engineering Internship at Discover Financial ๐
…Section in progress…
Fall 2023 at Arizona State University ๐
- SER 4XX Elective (TBD)
- SER 4XX Elective (TBD)
…Section in progress…
Final Thoughts ๐
…Section in progress… NOTES
- focus is primarily aimed for backend development, although there are opportunities for some front end development. Mostly java, some C/C++.
- Cons: Team projects, grading, cost, time, professor quality/course instruction is lacking.
- Pros: In depth/effective (cover topics from entire software development life-cycle (i.e., design, implementation, testing, security), use applicable and relevant tools
- experience with agile process and using git, ASU looks good on resume, investment, able to get internships. async classes - flexible.