Hi, I'm Dr. T" Chamillard. I'll be your instructor for this course. I'm an associate professor in the Computer Science Department at the University of Colorado at Colorado Springs, where I predominantly teach undergraduate game development courses, but I also teach our freshmen computational thinking course. I'm also the Program Director for our Bachelor of Innovation in game design and development. Why Dr. T? Well, I am a doctor even though I'm not the kind that helps people, and my name is Tim, so the T makes sense as well. But it's really Dr. T because a teach lots of freshmen. Freshmen at least in the United States, are trained to call their high-school teachers Mr. Smith or Ms. Jones, so the first time one of my students raises her hand and says, "Mr. T," everyone knows that's wrong. In case you need a visual reminder, I am Dr. T and not Mr. T. What's this specialization about? It's about two separate, but related topics. It's about computational thinking and it's about beginning C programming, and that's what this course is about as well. Now, you can ask 10 different people what computational thinking is and you'll probably get 10 different answers. Instead of worrying about a precise definition, we'll use the descriptions provided by the International Society for Technology and Education and the Computer Science Teachers Association. So those organizations talk about computational thinking as a problem-solving process that includes specifying solutions to problems in a way that a computer or some other information processing agent can solve those problems, organizing and analyzing data, representing data in a variety of different ways, automating our solutions using algorithmic thinking. Computers are great for automating solutions, and we'll talk a lot about algorithmic thinking. This last bullet basically says making sure that we at least try to make sure our problems solutions are both efficient and effective. For the beginning C programming topics, we're including A programming language to make sure that you have specified your solutions accurately and precisely, because here's the great thing about computers. They do exactly what we tell them to do. Here's the horrible thing about computers, they do exactly what we tell them to do. So when we formulate a solution to a problem for a computer to execute, we have to make sure we get it very detailed and perfectly accurate and so on. Why C rather than some other programming language? Because there are lots of programming languages. Well, I got to pick, so I decided to pick C. I will tell you that our freshmen computational thinking course at UCCS uses C as the programming language and it also serves as a prerequisite for a later course that some of our non-computer science majors need to take in advanced C programming. So I've decided to stick with C here. It's not always the first programming language that people learn. Certainly people are programming in Python, and Java, and lots of other languages as their first language, but you'll be able to handle C. With that said, we won't cover the breadth of C topics that you might find in a course that's aimed at computer science majors. We're really trying to have the tools that we need to explore the computational thinking topics with a programming language. It's the case though that C forms the basis for lots of more advanced programming languages like Java and C++ and C Sharp. So if this is your first programming, you are building a foundation that you can build on to actually learn those more advanced languages perhaps a little more easily. How is the course structured? The course is four weeks long. You'll have one quiz that is graded. So that's 25 percent of your grade, and that will happen in week 3. You'll have three programming assignments worth 25 percent each and those happen in the other weeks 1, 2, and 4. I've provided lots of practice exercises that aren't graded, so they aren't worth points, but they're good practice as you learn how to program. I've also provided some practice quizzes so that you can practice engaging with the computational thinking topics usually in a more formal answer these questions way. Speaking of the topics in the course. For computational thinking, we'll learn about algorithms and procedures, and we'll learn about data collection. For the C programming part, we'll do starting to code, which means installing your development environment and writing your first C program. We'll learn about data types, variables, and constants, and we'll get some practice doing STEM computations. Just as a heads up, computational thinking may not be the way of thinking that you're used to. It's very detail-oriented. Its very precise. So if you love math, for example, detailed logical step-by-step ways to prove things and so on, this should work really well for you. If you hate math but you think this would be a cool thing to learn, not math necessarily although we'll certainly use the math, but computational thinking in programming, you might have to work a little harder to embrace the fact that we have to get it just right. Close is not good enough. It may not feel this way if you struggle with the programming part, but I'm not assuming you have any previous programming experience. We're starting from scratch and we're building from the very first principles of how we program. So you should be able to work your way along even if it feels a little foreign to you. I will tell you frustration is part of the nature of the beast of programming. We all get frustrated as we practice especially as we're learning new things. Whether there's programming or snowboarding or riding a unicycle or whatever, it's frustrating as we try to master the material as we're learning how to program. That means that practice is really important. Just watching the videos or reading about programming isn't enough. Just like watching videos and reading about riding a unicycle isn't enough, you have to practice and practice and practice to get better, and that's what the exercises are for to help you get a lot of practice in addition to the graded programming assignments. If or when you get stuck you can go to the discussions on the Coursera course. You can go search the web. Stack Overflow is a website that often provides really useful input or feedback or answers to questions that you might have, and you may not even have to post. You can just search on your problem and you're likely to find answers to that particular problem. Of course, not everything on the web is true, so you should put your web filter on before you start believing everything you read about programming on the web. But, you can get good help when you get stuck. Okay, that feels a little daunting. I'm like, "Well, it's going to be really hard and so on." It's also super rewarding. It's worth the effort to actually understand these computational thinking ideas and to apply many of those in a C program. So let's go get to work.