C# – Advanced Foundations

No Longer a Beginner, Not Yet a Pro

Ready to take you C# skills to the next level??

When I got started learning C# I looked to PluralSight . This has proven to be a great choice! There are literally weeks worth of great C# and .Net content. While I did not get started advancing my C# knowledge THAT long ago, it was before PluralSight started offering “Paths”. At that time, way back when, they had just a few old blog posts to guide me on where to get started, and which order to watch some videos in. With the release of PluralSight’s C# Path I started comparing my learning track with theirs…

I may be bias – but I think mine’s better! So I’m going to share it with you.

Note: If you are entirely new to C# check out my blog post for you here : Learning C#

Advanced Foundations Level

Duration : 20 hours 13 minutes

C# Fundamentals With Visual Studio 2015

Even after the free tutorials I linked in my Learning C# post, I would still suggest doing this course. Practice makes perfect, and the instructor Scott Allen (on Twitter @OdeToCode ) is great at explaining things. It may be your second or even third time through some of the C# basics, but it won’t hurt you and you’ll get a chance to explore some related concepts like the Common Language Runtime (CLR), and Object Oriented Programming.

Pro Tip : If there is a new version of Visual Studios, check for a new version of this course.

C# Programming Paradigms

This course is again by Scott Allen and introduces you to some really powerful C# features. Language Integrated Queries, or LINQ, will become a regular part of your programming once you learn them. The Dynamic Language Runtime, and Functional Programming will give you glimpse at some new ways to think about your programs. Finally, the course wraps up with Scott’s 10 rules for writing better C#.

Pro Tip : Even if you know the rest, watch the 10 rules! Scott has been a Microsoft MVP for over 11 years now, take about advice from a pro!

What’s New in C# 6

Great chance to get a look at the internals of C#, hear about how the language is changing, and the roadmap it is on. While the last two series will get you started writing great C#, this one will try to save you time by showing you some of the new syntax changes. Also, get ready for you introduction to Roslyn.

Pro Tip : If there is a new C# (7 isn’t too far away as I write this post), check out that one too.

CLR Fundamentals

This course slows things down with Mike Woodring (another Microsoft MVP) and will explain how all the acronyms you’re always hearing work together. From what really is the .Net Framework, to understanding Just-In-Time (JIT) Compilation, the Global Assembly Cache (GAC), and even concepts like CLR Interop! If all that sounds like gibberish to you, you know what to do, watch these videos!

Pro Tip : Don’t skip this one, this low level stuff could save you a lot of time debugging in the future.

CLR Threading

How many cores does your processor have? I bet it’s more than one. I bet it’s more than two. You’re going to want to use them, so you’re going to want to watch this one. It is authored again by Mike Woodring (on Twitter @mcwoodring , and he is going to help you get through understanding the main parallel programming concepts, and concerns.

Pro Tip : I didn’t use these ideas right away, but when I needed them I was happy to know them.

.Net Regular Expressions

I almost didn’t watch this course, but by the end I was happy I did. Regular expressions are used for pattern matching with text. How will you know if a user input string is an email address? Or a phone number? Regular expressions can! Yes, the syntax gets a little (a lot) crazy, but should you ever need to do a lot of text processing you will be happy to know about the power of regular expressions.

Pro Tip : Turn up the video speed a bit. Get the concepts, you can look up the specifics when you need them.

I never said it was going to be quick! There is a lot to learn with C#, but thankfully these core skills can be transferred to all types of projects, desktop (WPF, Windows Form, Linux and Mac with .Net Core), mobile (iOS, Android, and Windows with Xamarin), and web-apps (ASP.NET).

Stay tuned for more my next building block of courses next week. If you make it through all the above before then, just message me and I’ll send you more material you coding beast!

Thanks for reading,

Thomas

Should I Learn R or Python?

For Data Science and Beyond!

R or Python for Data Science

So you want to be a data scientist, but are stuck on the first polarizing decision of learning R or Python… I’m going to try to help you!

I’m also going to attempt to not make this post follow the typical “R is maybe the best, or Python, or neither”, as I find these kind of articles informative, but not that helpful. If you are wanting a break down of R and Python’s strengths, ease of learning, salaries, etc. you can find soo many with Google, I’ll even save you the work of typing it in – R or Python. But while their infographics are detailed and interesting, reviewing them does not help you make the decision of which to start learning. So that is what I’ll try to do here, in just two simple questions.

Disclaimer : I’m neither an R nor a Python expert, but I think my little bit of experience with both can set you on the right path

1. Do have a data set and a problem in mind?

Yes – R
No – Python

I feel this question may split developers and academics (generalizing a lot here). Academics typically have a thesis, which is a set problem they are wanting to solve, and are looking to a data science language to beef-up what they might have tried to do in Excel. In contrast, developers, may be wanting to find work with a company and be looking to a data science language to add valuable insight to business data. With these two needs in mind, I think the academic approaching a problem with a mathematical rigor could find R a great place to start, and the developer looking to hack together business data, could find Python great. Now obviously, I’m making some assumptions here, but if you can see yourself fitting into either camp, that would be my advice.

TL;DR 
Choose R – If you have a dataset (sensorlogs.csv, or a database). You’re going be able to get up and running very quickly and answering questions with R. 
Choose Python – If you need to scrap a website, hack together program outputs, you may need the flexibility of Python to get things together.

2. Do you have programming experience?

Yes – R
No – Python

This may seem a little reverse, but hear me out. The simple approach is to say if you have programming experience, you can learn Python quickly and be solving problems in no time; while learning R is an entirely new beast. However, I think that if you already know how to program, you can use that language to solve the parts of your problem which R would not be as strong at. For example, if you want to build an entire application and require some data analysis. You can build the application in your known language, then introduce R to crunch data as required. Now in contrast, if you have no programming experience, I think you should learn Python. The journey of learning will always open new and unforeseen doors. If a year from now you need to build a web service, you probably won’t get far with R there. Most people will not get a job where they are doing pure data science all the time. If you end up needing to develop something, you will probably need other tools. If you don’t have other tools, learn Python.

TL;DR 
Choose R – If you already have a working understanding of another programming language. 
Choose Python – If you have never programmed before, as you can do almost anything with it.

The Choice Is Yours

I tend to see R as a really fancy calculator, and I’m talking really fancy, fancier than even a Titanium TI-89. This isn’t meant to be an insult! On my desk I always have my calculator next to me (yes I know there is one on my computer), but my calculator is better because it is specialized. R could be the best choice for you if you have data, even dirty data. Even if you don’t have a clearly defined goal with that data, R has many great tools for exploring and visualizing that data.

Now Python on the other hand, I see as good kitchen knife (where do I come up with these metaphors??). Sure there are specialized knives, pairing, steak, bread, etc. But for tackling the biggest variety of jobs, that kitch… err Python is going to get the job done.

So, to repeat myself like a broken record (I do similes too). If you have data, or get to work with just data choose R, especially if you already know a different programming language to handle any other development needs. If you don’t know any other programming language, or need to create something to generate your data choose Python.

I know everyone won’t agree with me, and rightfully so. I also had to generalize a fair bit to try to draw a clear line between the two, but I hope I was able to help you. As always, if you have any further questions about my suggestions please reach out to me with any of the links below.

Thanks for reading,

Thomas