When most students first hear there are different sorting algorithms, the most common reaction is: why?
The best way to explain it is to think about the different sorting methods as different ways to sort a shuffled deck of cards:
Option 1: You could go through the deck and pick out all of the 2's and put them to the front. Then go through and pick out all of the 3's and put them next to the 2's. Then the 4's, etc, all the way through the deck. This might take awhile, but it would guarantee things were very much in order (you could potentially even organize them by suit while you were doing that).
Option 2: Another way could be to first go through the deck and put all of the face cards together, all the 2-5 cards together, and all the 5-face cards together. Then go through again and again, each time organizing a little more specifically. This is a little easier on the mind, but has the downside that things really get shuffled up while you're doing it. It would be hard to maintain a previous order of suits.
You can extrapolate that to programming by remembering that sometimes you are sorting HUGE data-sets. Some sorting methods are faster than others. You may want to go with the fastest method if the dataset is that big.
But let's say you have a dataset where some of the data isn't unique (let's say you want to sort a deck of cards by suit, but keep the order of the numbers the same). You want to make sure you use a sorting method that maintains suit order, such as option 1.
Of course, this is an oversimplified explanation, and there are whole college classes on sorting algorithms. But for right now, the important thing is to know that they exist, that they are already written for you (no need to write your own algorithm), and at some point in the future you may want to weigh using one algorithm versus. Another.
The Tech Academy
By the nature of its name, “Abstract Data” can be a tough one to understand. At The Tech Academy, we believe it’s important to understand Computer Science fundamentals, and we don’t shy away from difficult-to-explain concepts.
So what is “abstract data”?
At a basic level, almost every piece of data or process you come across has some level of abstraction. Let's look at an example outside of computers to help understand. When you turn on your sink to wash your hands, the only thing you probably care about is that the water comes out of the faucet and disappears down the drain. The actual process of water retrieval and removal is hidden by a layer of abstraction that you don't see and really don't care about as long as it works.
Yet imagine if you dropped your wedding ring down the drain. Suddenly, you do care how it works. You would find yourself exploring past the bottom of the sink and diving deeper into the inner workings of drains and plumbing. Doing that, you are now revealing a level of abstraction that was not known to you when you were washing your hands.
This relates to data in that when you define some data on your computer, all you might care about is that data persists in a format that is understandable and accessible. You might not need to know the exact structure of how that data is stored or accessed. This data structure and access layer is considered to be hidden by a level of abstraction. Thus the structure of that data is consider to be abstract data.
Of course, there is much, much more to this topic, but we hope this sheds some light on it.
The Tech Academy
It's Throw Back Thursday! Since we don't have any old selfies to post, we'll do you one better— watch Dr. Brent Wilson's talk and demo on secure software.
Something I’m sure we can
all agree upon is that education of any kind is a big financial and time
commitment — even coding boot camps like The Tech Academy. If you’re starting with
little experience in programming, or tech in general, committing to a coding
program is understandably scary.
For those who want to dip their
toe in the programming ocean instead of diving in head first, The Tech Academy
offers a free two-day Python Course!
During the two-day workshop
attendees learn the fundamentals of Python, a widely used programming language.
It also covers basic computer terms and the introductory concepts of object oriented
This hands on workshop
follows a very basic structure of learn-build-learn-build and so on. The
students are taught an overview of Python, the basic concepts, format &
structure, and are then taught how to code in the language. From there they build
their own assignments, meaning students use the tools they just learned to
build something completely their own. New concepts are then introduced and built
upon the previous ones, slowly building upon their code as they go.
The two-day Python course is
a great start to programming for those who are interested but aren’t ready to
make the commitment to school. If you
fall in that category, check out our Meet
Up page for the next class, and see if coding is for you!
For my final, I created a project using an Excel file as the data source for an SQL Server query. In this project I learned that software doesn’t “just work” all the time. It takes iteration and correct versions and sometimes software to be installed, drivers, settings need to be changed, etc. After writing the code for what looked like it should have been easy, that is when pandora’s box was opened. I thought I was going to be done 12+ hours ago at that time. Well, the way I decided and found to process an Excel sheet was incompatible with 64 bit assembling, which now I know about that and changing the C# assembler. When I began I had used Google Sheets since I don’t have Excel on my PC and so began the troubleshooting. Most of my time was spent troubleshooting, but I slowly worked it out. I learned about StringBuilder and about using other people’s code and adapting it to my needs while utilizing syntax resources direct from MSDN.
I will use C# for making applications of all different kinds. I can tell that I barely know anything about C# but I do understand the syntax a bit more, I still need more practice, but I gained an eagerness to dive in more. I didn’t use ASP.NET
much but am about to join a Live Project which I’m pretty certain is going to give me some solid experience with ASP.NET
This course was very fun and interesting! It started out good, got difficult, got easy, and now I understood that I don’t know hardly anything. I got a lot of experience doing a fun project making a console application that talks to the user. It was a blast. I will likely use C# strictly from this point on, of course integrating other technologies as I see fit. The road ahead will keep me busy for a very long time, and C# is extremely powerful.
The Tech Academy Student
I gained a broader perspective on how different aspects of code can be used in Visual Studio to access and manipulate data.
From my perspective the C# course was extremely important as it is a commonly used code convention across different languages (Java, C++, Objective C). Once I understood this the intrinsic value of learning C# quickly became obvious.
The biggest challenge for me in this course was understanding how the application framework works and how to split up different aspects of an application into different layers. Understanding the MVC framework proved invaluable in developing my understanding of how responsibilities should be apportioned in the ASP.NET Framework and really solidified my understanding of program architecture.
I am not sure how I will use ASP.NET as a developer but I know that one career path is to continually work in this framework and garner certificates and experience in order to further advance. Obviously, if I found a job as a front end developer using C# all of the knowledge in this course would prove to be indispensable.
I learned a lot of things from this course, not the least of which was assigning classes which is extremely important. The biggest takeaway for me from this course was to not give up and continually review earlier material in an effort to gain a better understanding of the material as the complexity progressed. This course greatly helped me to advance my cultivation of the idea that I can solve many problems simply by developing a coherent strategy and learning how to overcome obstacles along the way.
The Tech Academy Student
I gained an appreciation for how simple and complexly powerful SQL can be, as well as how DBMS software interacts with the hardware of the physical server. I was stunned at the history of SQL and how long it has been used and how relevant it still is and will continue to be. I think it's pretty awesome that such simple queries can be multiplied and manipulated into complexly powerful tools that can be recycled.
As a developer data will be used in one way or another, having a full grasp of how that data will be stored and accessed will be an important part of the development process. If you don't understand how the data is structured how can you access it, or use it in development.
I think it will be highly important at most jobs I may have in the future. There is so much data being used and transferred everyday that it must be organized in some way that can be universally accessed, more or less, by companies. Whether it is to sell goods, send emails, or take big data and turn it into a meaningful solution to businesses. I think having a fundamental understanding of SQL will be invaluable when it comes to finding a job.
Tech Academy Student on Database & SQL
We asked student Annie B. a few questions about the Python course at The Tech Academy, & here's what she had to say:
What are some of the ways that you might use Python when you're working as a software developer? What did you gain from taking this course?
Because Python is such a versatile and easy to use programming language, as well as extremely popular, I expect I will come across it quite often in my work as a software/web developer. I can see how incredibly useful it would be for maintaining and automating tasks for an internal database with virtually ANY company - running reports, maintaining company employee records, keeping track of and accessing customer information and orders, etc. Python can be used as a client-side scripting language as well as a back-end programming language for desktop apps, web apps and games - so, basically anything. It is also able to interact with and work in conjunction with other programming languages, and can be embedded inside much larger programs as a scripting language, which is really cool.
Before this course I had heard from multiple people that Python was the programming language to learn, but I had no idea why that was (partly due to the fact that I’m new to the world of computer programming...). After learning how to create GUIs and access and manipulate databases using SQL through Python, I can now say that those two reasons alone make it worth the effort. Not only that, but it really is easy to learn and use as far as the basics. I’m sure I’ll want to get way more in-depth with it going forward with my career, but this course was an amazing introduction.
I learned a ton from working on the Bewander social medial travel site. It was really great to get some real-world type experience, and to see other people's code, and to a see a site in this state of work-in-progress. It really gave me a good idea of the design of an MVC web app, and how things work together as far as using models, controllers, and views.
Creating a button for changing a profile picture allowed me to get an understanding of how to create a partial view, and how to drill the functionality through the program to get to that view with all of the relevant information.