My philosophy on teaching computer programming stems from my first college computer science course, "The Structure and Interpretation of Computer Programs". It was taught in Scheme, a language that is mainly for learning programming and generally not for software development. It wasn't the language that mattered, but rather the concepts of programming that were taught through the language. That is how I thought to come up with the "ADCs of Programming" as a way to introduce students to the concepts of programming languages. "A" is for actions. What tasks can the programming language perform? Most can do arithmetic, but the set of actions varies by programming language. "D" is for data. Every programming language has a way of representing data, from literal values to variables, because actions need to work with data. "C" is for choices. Without the ability to choose what actions to do or what data to use, programs would be inflexible and uninteresting. Therefore, programming... read more
What's happening in the world of private tutoring?
Computer Programming BlogsNewest Most Active
Many times I have reflected on my favorite part of interacting with students I have met through WyzAnt. I have always found the "discovery" process with a student to be one of the most exciting times during our sessions. The Discovery process consists of the first 10 to 20 minutes when I learn about why they are seeking additional help in a certain area and what they hope to achieve. These are some of the scenarios I have encountered: a young professional, just starting out in their career, tasked with re-writing a complex system a Masters student seeking a degree in business an Electical Engineering student seeking an undergraduate degree a self-employed business man seeking assistance with converting a system to a new language a computer science student who needs reinforcement with certain lessons Not all of these interactions have led to immediate progress but they have definitely taught me how to interact more effectively with different... read more
There is very little emphasis these days on teaching programming, in spite of the fact that technology is becoming more and more a dominant aspect of our lives. Perhaps this is because many programmers are self-taught, used to working alone on projects, and therefore the assumption is that students will learn programming "as they go" or "on their own". This is unfortunate because I think that this aversion to traditional instruction and the preference for "self-taught" programmers leaves some people who want to learn in the dust. I have lately become interested in rectifying this problem. A few of my clients have discussed the option of learning programming through tutoring sessions with me. I think that if I had been able to avail myself of such an option when I was first learning to program, I might have had a much easier time in learning how to properly use computers as the powerful tools that they are. I believe, however, that this is very much an open... read more
In preparation for offering Python as a subject I'm planning on reviewing and refreshing my basic Python programming skills using the online text "How to Think Like a Computer Scientist", located at: http://openbookproject.net/thinkcs/python/english3e/ As I progress through the chapters I plan on writing a brief summary and reflection on the topics covered. I also plan on posting my answers to selected problems from the text. Python is an exciting, powerful, but easily learned programming language, with a large selection of libraries for achieving many common tasks from file i/o, networking, and various mathematical functions, to cross platform gui development, application scripting and automation, and other useful and advanced tasks. Obligatory XKCD: http://xkcd.com/353/
Scratch is a wonderful project out of the wonderful school, MIT, the Massachusetts Institute of Technology. This project is designed to allow children of all ages to learn the basics of programming by hiding the language, and structure of programming behind pretty pictures, called sprites. It also makes adding sound and movement to a presentation very very easy. So, I have put some time in and I have created demos for some of the "Properties of Real Numbers" that I teach during pre-algebra lessons and that everyone should be familiar with if they did not sleep through their 7th and 8th grade math classes. If you did, then maybe you should pop over to http://scratch.mit.edu/ and search for the distributive property, or the commutative property. Please leave a comment there if you do, and vote it up! Thanks, James M. Math and computer programming tutor
Encourage your high school students to learn computer science. The link below explains you why? http://finance.yahoo.com
Teaching courses at the college level has taught me that one teaching style does not fit all students. In a college course environment, however, an instructor cannot always stop in the middle of a class to re-frame a lesson to suit the students who just aren't getting the topic. With one-on-one tutoring or even small group tutoring, a tutor has the opportunity to present a topic, check if the student(s) "get it", and if not, try a different approach to the topic on the spot. Tutoring means not going strictly by a syllabus but instead meeting the needs of the student, varying the material and teaching approach as appropriate. Like many other subjects, computer programming invites a variety of approaches to learning. It can be formal, hands-on, puzzle solving, problem solving, or exploratory. Different topics in programming are best suited to particular approaches. For instance, loops are best taught hands-on with plenty of examples to understand their mechanics. However,... read more
Note to the Future of our World: Learn as much Math as possible - everything consists-of or is composed-of Math. And, when you say "When will we ever use Math?" the actual answer turns out to be, "You use Math in everything, everywhere, all of the time!" Most students have had a rough time with Math - not because they are stupid but because their teacher didn't figure out how they learn best individually - everyone learns differently - even the students who seem smart figered out how to work-around the teachers and of course they never admit that they are also struggling and they don't share their work-around techniques with their classmates. You Can Do this Math Thing! Just Hang In there! ToeKneeNose (o;'
When using C++ for object-oriented programming, there are some basic concepts and best practices that should be followed for good software engineering. First is the use of public and private in class definitions. Most programmers moving from C to C++ are accustomed to using structs, where all fields are "public" for others to access; in C++, all fields in a class are "private" by default instead. There is a good reason for this: everything in a class should be private unless otherwise necessary. If there is some data that you wish to "expose", you are best off using getter/setter methods to do so rather than making the data public. If some other class needs direct access to the data, make it a "friend" class instead of making the data public. Be smart about which methods are made public as well, and limit the amount of exposure to the "internal workings" of your class. Next is the use of "const", which stands for "constant"; this keyword signifies data that will not be... read more
I've tutored students throughout the DC metropolitan area in web programming (in HTML, XML, PHP), database development (in SQL and MS Access) and statistical analysis, mainly using SPSS (Statistical Package for Social Sciences). I noticed that unlike other technologies, SPSS is often introduced to students at the tail end of the undergraduate and graduate school experience. So, they are often pressed to learn the system and conduct professional research analyses in a short amount of time. To help WyzAnt students, here are a few good online resources that explain how SPSS works: http://whatisspss.com/ http://surveyresearch.weebly.com/what-is-spss.html http://www.ehow.com/about_5459472_spss-software.html Good luck researching! Randi R.
Why would failure ever be a good thing? Well, in computer programming, failure can mean that you have done a good job testing your code and you have found a bug. Finding a bug during testing means that you can fix your bug before you submit your project or assignment to your boss or your teacher. In the process of fixing the bug, you might realize how to improve other parts of the code as well. Without thorough testing, with a possible failure or two along the way, you cannot be confident that your code will do what it is supposed to do. So, how do you go about testing? One way is to think of as many examples of possible input data as you can. Good input, bad input, simple input, and complicated input should all be tried. Keep a list or a file of the examples so that you can try your code on the examples each time you change your code. Another way is to enlist the help of co-workers or friends to try to "break" your code. You can never completely predict what the end users... read more
A struct is a datatype from the C programming language that encapsulates a number of different datatypes into a single object. This can be used to easily handle a set of values as a single "package", while also being able to access the individual members of the structure. One example of this may be a ContactInfo structure that contains a person's first name, last name, e-mail address, phone number, birthday, etc. It's easy to see how this would later be extended into the notion of a "class", where the object could have methods defined to access the data or otherwise manipulate its contents, and even lend its functionality to extensions that "inherit" from that type. C++ added this capability to the "struct" while also providing the more appropriate "class" keyword that does mostly the same thing (with some minor differences, such as the default access for members and methods for a class is private while it is public for a struct, or in the way that one can use initializers... read more
For the past few years, I've spent most of my time teaching and tutoring on physics, but I also tutor students in programming languages such as C, C++ and Java. These languages are three of the most difficult to learn due in large part to their comprehensiveness. These and languages very similar to them are the programming languages used to implement most of the highest performing and functionally complicated applications in the world, including operating systems, office suites, high performing websites and smartphone apps. Prior to becoming a teacher, I put myself through graduate school teaching classes and tutoring mostly college students on programming. I then worked for about 20 years for software companies developing software, leading development and consulting into business on the development of custom, high performance software. I welcome inquiries on tutoring of computer science topics, such as software engineering, software architecture, programming and databases... read more
I have studied Electrical and Computer Engineering and received Master degree in 2008. While I was studying at university, I worked as a teacher assistant. I have taught many courses to undergraduate and graduate students. In addition, I taught a lot of elementary and high school students as tutor. Both of these experiences convinced me to pursue tutoring as a career. Therefore, I have tried hard to become a good teacher. I realized that teacher preparation is the major determinant of a great teacher. I have taught large variety of courses; however, my best experience is computer programming. Right now, I have some college and high school students whom I am teaching Java, C/C++, Matlab, and object oriented programming. I love teaching the computer programming to any student and can transmit information in the best way at minimum time. If you have any problems in programming and want to become ready for your class or doing your homework, I could help you. You are going to... read more
Being my first WyzAnt post, I figured I'd just ponder on a fallacious belief new programmers generally have. But before that, allow me to introduce myself! My name is Jaffer, I am a student at APSU, a senior with a major in Computer Science and a minor in Mathematics. I chose to become a CS major because, well, I love video games and I've always wanted to make them. That is why I really got into C# and XNA, as it makes the life of a game programmer significantly easier. I've used C, C++, Java, C#, Ruby, Fortran, Erlang, F#, VB, HTML, PHP, SQL and who really knows what else, and this is over the course of just 2 years really. So, onto the biggest fallacy a new programmer probably believes: Fallacy: Learning my first language was hard and took a long time (it usually does!). I don't want to learn another language because it will take forever. Truth: Learning a programming language is not about memorizing syntax or semantics, nor is it a test of if you can place each semicolon... read more
Why do we spend so much money on software? Is it because there is no other option? No! The truth is that just about every personal computer need can be fulfilled via open-source software! What is open-source software? Normally, when we purchase software, we are purchasing a compiled program that allows us to run it; if we have an idea for improving the application, we can only sit back and say "wouldn't it be nice..." Open-source software is freely distributed (although you may see it included in commercial packages such as Red Hat Linux) and includes source code. There is nothing prohibiting us from altering the application to our liking; in fact, it is standard practice to make changes or additions to the source code and redistribute it. Even those who are not so tech-savvy can recognize the obvious benefit of free software. Here are some of the most popular open-source packages: Firefox - A fully functioning web browser with consistent updates - from Mozilla... read more
HTML is the type of computer language that takes years to actually understand it. There is no way that someone can learn it overnight. You can pick it up very easily, however this is the type of subject that you are always learning new things. I have been using HTML for over 8 years now and I am still learning the ins and outs of it. You might look at the code and say “well that looks easy, it’s in English”, but in reality you have to remember, it’s a different form of English and is written is words that really don’t make much sense. As a new student, you ask me, “how will you teach me HTML?” At first I am going to teach you the basic and during this time I am going to try to understand how you learn best. Are you a visual or auditory learner? The best way I find it to learn HTML and basically anything in Web Design and Development is just by sitting at a computer and start typing out the code. The more you write it the better off you will be in about a week. Practice,... read more
Data structures are a way by which data is stored and organized in a system. Linked List, Stacks, Queue, Trees, Hash Tables etc. all come under this category. Best way to learn data structures in any language C, C++, Java etc is to have a pictorial representation of the problem in front of you and then to implement. Syntax of data structure in any language can be easily learned. One need to focus on the meaning of particular data structure and best way to understand this is to have pictorial representations of what exactly needed to be implemented.
Let's keep this simple. I consider what am I going to do with this new computer. For me, it is a combination of hobby computing, business needs, and personal computing. I am seriously considering an Apple this time. The Apple will fit my business needs with both software and the Microsoft offering I can be compatible with the office. The main reason I am considering an Apple is money and security. I am willing to spend the money to get the hardware and software to pursue my hobbies. My hobbies being music, photography, and computing. I like the way media looks and feels on the Apple. And to be honest, I am tired of the pc. The Apple works. Security. Security is the key. With identity theft the expense is justified. While working security in the United States Air Force I realized that security is a key component in computing. Therefore, I will spend the money now. Identity theft is serious. Enough said. Now build the computer. This sounds easy... read more
I was working with a physics student the other day and came across a football trajectory problem which was very timely because Superbowl Sunday fast approaching and the Pittsburgh Steelers are still in the mix. Yeah! Most trajectory problems in physics problems meant to be worked “by hand” have to make some assumptions so that the equations can be solved without using a computer. The biggest and most common assumption is that the effect of the air resistance on the object is negligible. “Negligible” means that we consider (or at least are willing to temporarily pretend) that the effect is small enough that if we neglect accounting for it in our calculations our answer could still be useful in some way. For example, if: a) we know our kicker can usually kick with an certain initial speed v, and if b) we know how to use basic trajectory physics calculations to tell us the maximum possible range R for a kick at a given angle from the horizontal (let’s call it theta),... read more