1. Introduction. It is a very safe bet that you will find the study of computer science at NCSSM quite different from anything which you encountered in other classes you have taken. You will be expected to be much more independent and to take greater responsibility for your own learning. You will be expected to show an active mastery of the material by applying it to solve problems or build applications. You will be faced with learning about unfamiliar classes or objects on your own from their documentation to handle the problem given you. It is not unusual for you to be asked to work with a group of people to do a project or produce a report. Your grade may in part or completely depend upon the effective functioning of your group.
RTFM Every computer scientist knows what this means: Read the fun manual! Your teacher will show you the documentation for the language(s) you are using. Become familiar with this documentation. Do some spelunking on your own; this can expand your knowledge in very useful ways.
Excellent documentation exists for all of the languages taught at NCSSM.
In computer science classes, you will spend very little time, if any at all, reciting or recalling specific facts. Rather, you will be asked to apply the knowledge you have gained in different contexts. You will get this knowledge from a variety of sources: your teacher, your textbook, your peers, and from class activities.
Further support is available from your teacher and from the departmental tutorials. The purpose of this part of the study guide is to help you marshal these resources so you can master the material and gain the knack of learning mathematics at NCSSM.
2. Good Study Habits. Computing is a subject in which you build skill incrementally over a long period of time. In many ways, learning the subject is akin to learning to play a musical instrument. With the instrument you might learn fingerings, riffs, or other techniques to strike the desired notes. These smaller techniques are applied to playing musical passages. Other concepts such as proper rhythm, phrasing, and melody must be integrated skillfully to play a musical piece with skill and style. By learning many pieces, you begin to master a genre of music such as Jazz, Rock or Baroque.
You see a theme here: small details are integrated into larger ones. The learning process is a cumulative one. In music, we master all of these details and orchestrate them into a coherent musical piece. The same sort of thing occurs in computting. We master small techniques such as how to get objects to do work for us, using conditional logic to make decisions, or using loops to achieve repetition. We often wind up wrapping these inside of methods or functions. These small tools are applied together to solve complex problems. An experienced musician never stops learning new riffs and new techniques. Likewise, in computing, we are always examining new concepts, mastering them, and then applying them to solving problems. As in music, we develop a repertoire of skills. These skills build and combine to give us new capabilities.
This special nature of computing makes frequent practice important. It is impossible to absorb a large number of concepts overnight; the difficulty of doing so is similar to that of a musician who tries to learn a piece five minutes before rehearsal.
You should systematically allocate time to review notes and attempt problems throughout the week. It is best to do this for each class on that class day while the new material is still fresh in your mind and before new material is introduced. Make a note of items that give you difficulty so you can approach your teacher or the people in the tutorial lab with specific questions or areas you wish to discuss. It is far easier to keep up with the material if you work on it often. If you fall behind in a computer science class, it can be quite difficult to catch up.
Cutting corners in class may initially appear to be a good way to budget time. This is a dangerous trap. While it may seem more time-consuming to do things "the right way," you will quickly find that doing things well the first time around will save you duplicated effort and frustration down the road. Often the careful and prudent way of doing things turns out to be the easiest!
3. Reading a CS Textbook. Virtually all of you reading this for the first time will be shocked to hear this: Critical reading skill is the most important determinant of success in a computer science class. This skill gives you access to the best tools and enables you to learn how to use them effectively. The textbooks for our web development, python, and Java were written here at NCSSM and they come right to the point. Many students at other institutaions have downloaded them and used them to successfully learn these languages independently.
When you are going to read your textbook, have the appropriate tools at hand. The most important thing to do is to have your language tools in easy reach. When you begin a new section, look at the introduction. Look for any new vocabulary that is to be developed; often these words will be shown in bold or italic font so they are easy to find on the page. Make a list of these words before you start the section. Then, before starting to read, see what you are trying to master by turning to the end of the section and reading the first few problems. This will help you to get the most out of the examples that are presented there.
Now you know the vocabulary you are to acquire and you know about the simplest problems you will need to be able to solve. Read the introductory paragraphs carefully; they will tell you what is going to happen in the section. The exposition in the chapter will make it possible for you to understand the examples; read it carefully! If you see code (you will see lots of it), break out your tools and do some experimentation. Often we teachers are asked, ``Can I do XYZ?'' If you have that question, open your tools and do XYZ and see what happens! Often, you can answer your own question.
Write small programs that use the new ideas in the chapter. Deliberately make errors and see the error messages. By getting familiar with error messages, you become a far better debugger and diagnoser of problems. This, incidentally is a six-figure skill. You want to have it. Everyone will want you on their team.
Avail yourself of resources! Your best friend in this class is The Google. Use it early and often. Another great friend is Stack Overflow. This is a great worldwide community for programmers. Join it. You can ask questions, search it, and answer questions for others. It does not hurt to have some serious Stack Overflow reputation points.
4. Problem Solving Technique. The key idea here is: you do not really understand what's going on with programming until you start solving problems with it. The other is: Create the right abstractions to isolate complexity from yourself. Remember, the human mind can only keep track of a few things at a time, so we use abstractions such as functions and classes to keep things manageable.
Here are some steps you can take to get over the hump.
- Relax and clear your mind of other clutter. Find a place where you can concentrate. It takes time to load a complex problem into your brain so you can beging to attack it.
- Ask this question: What do I need to keep track of? This will give you a solid hint as to what sort of variables you need. When you need to keep track of something, create a variable for it.
- If you doing a modest project, you can probably solve it by creating functions. The question is: What sort of functions do I need? Begin by thinking about the entire problem. It's probably too big to solve in one block of code. Try breaking the problem into pieces you can use to work together to solve the problem. Don't write code yet! Think about the desired behavior for each piece without getting bogged down in language detail.
- If a piece you designed in the last step is codeable in a reasonably sized chunk of code, code it. If not, apply the last step to each piece, thinking of that piece as a problem on its own.
- As you creat functions, test them and try to break them. Know their limitations and strengths. Keep your test code! It can be helpful to you to diagnose any potential future problem.
- Identify the key unknowns. Determine what the key quantities are and give them clear variable names. This way you can talk about them or work with them mathematically. Now restate the problem in terms of the variables you defined.
- Determine one or more mathematical relationships amongst the unknowns. It may take more than one relationship to do the job. Determine any physical restrictions on the variables. (For example, lengths are non-negative, etc.)
- Use the mathematical relationships and the techniques at your disposal to work with the relationships. Try to represent them with equation or equations whose solution will give answers to the given question.
- Report the results of your solution in the original language of the problem. Make sure you have provided a complete answer.
- Evaluate your solution and see if it is sensible. Sometimes you will want to see if you can extend it to a more general problem.
- P= the number of pounds of peanuts present
- C= the number of pounds of cashews present
Here are five steps that can be applied to solve many of the mathematical problems you will run across in your math and science classes. This is no magic key to solving problems, but thinking through these steps can often help you to get started.
If you get stuck, it is likely you have missed something in Step 2. Go back and look at the problem. See if there is any information you have not yet used. If you find unused information, it is likely to be a key thing you are missing. We shall discuss a simple example in detail here so you can see the principles at work.
A mix of 500 lbs of nuts is worth $1700. It consists of peanuts, which are worth a dollar a pound and cashews, which are worth $4 per pound. How many pounds of each type of nut is present in the mix?
We shall now use the steps above on this example.
Step 1. Here the question tells all: How many pounds of each type of nut are present in the mix? The key unknowns appear to be
Since P and C are weights in pounds they are non-negative, e.g. P≥0 and C≥0. Since the mix of nuts weighs 500 lbs, P≤500 and C≤500. Notice how we have given each quantity a name evocative of its role. Observe the we have noted physical restrictions on P and C; if either turns out to be negative in the solution or is greater than 500 lbs, we know there is a problem!
Step 2. Now we look for mathematical relationships amongst the unknowns. Here is where we must read critically and carefully. You see it says, "A mix of 500 lbs of nuts".? What does this say about P and C? The mix of nuts consists solely of cashews and peanuts and it weighs 500 lbs. The mathematical relationship is P + C = 500. Notice that all the quantities in this expression are in the unit lbs; in these problems, the units must be consistent all way across. If the units do not match, you are surely making a mistake.
Have we gone far enough? All we know is that is P + C = 500; this is not enough to pin down a solution. It is easy to see we can write down several solutions which satisfy this equation, but we also see unused information: we are told about the dollar value of the mixture. The units of the prices are in $/lb. The nuts are measured in pounds. When we multiply, the unit will be dollars. Since the peanuts are worth a dollar a pound and the cashews $4 per pound, the total value of the nuts is P + 4C. Referring back to the problem, we see that the total value of the mixture is $1700; this gives the relationship P + 4C = 1700.
Step 3. We can use a little algebra to solve the equations P + C = 500 and P + 4C = 1700 to get P = 100 and C = 400. Warning! We are not yet done. Many students make the mistake of bringing the process to a halt here.
Step 4. Let us restate our solution to the problem in the original language of the problem. Something like this is good: The mix contains 400 lbs. of cashews and 100 lbs of peanuts. State your solution in a complete sentence so others can understand it easily.
Step 5. Does our solution make sense? First of all, we got non-negative quantities for each type of nut. Notice how in Step 4 we stated everything with units. Secondly, we can check our answer by seeing that 400 lbs. of cashews are worth $1600 and 100 lbs of peanuts are worth $100, for a total of $1700. What happens if you change the figure $1700 to something else? Think about that; experiment with it a bit.
When you start solving problems in your homework, you should use this example as a model.
Now let us discuss problem solving at the "macro" level. Many mathematics textbooks have a list of problems whose difficulty becomes greater as the numbers get larger. This is not true of all textbooks; your teacher can give you a reliable reading on this in the beginning of the year. It is a good thing to ask about. In any event, make sure you try a good representative selection of the problems. Many students make the mistake of limiting themselves to the problems assigned by the teacher. While this may be a reasonable minimum, it is probably not all you should do. Take your time to check answers in the solution manuals or in the back of the book; manuals are often available in the tutorial room. When you go to check solutions, you can take the opportunity to check up on any problems that did not yield to your efforts.
Many students think they "understand" the material if they can follow someone else's work on a problem. This is a dangerous assumption; following someone else's chain of logic is much easier than generating your own. You fully understand the material when you can work the problems on your own. You should be able to explain what you are doing clearly and easily to others.
5. Getting the most from your teacher and the class. What happens in class time is critical to your success in a mathematics class. The teacher will discuss the material and will often put his own slant on the material. The class will elaborate on things presented in the book or address issues not covered in the book. These discussions are valuable resources, and you will want to take full advantage of them. Here are some basic things you need to do.
1. Be prepared. Bring your notebook, pencil, and paper and your calculator. Bring your textbook. If you work in a "pod," you may only need one or two books per pod. Make an agreement about bringing books in your pod so your group can share at least two of them. You will want to be able to look at the book if the instructor refers to it during class.
2. Be prepared. Get your homework out and be ready to ask questions. Make sure you have read and reviewed the previous section in the textbook and that you have done any other assigned reading; apply the techniques outlined here on reading mathematics textbooks. Raise any questions you might have from your review of the previous class's notes or that you generated by reading the previous section.
3. Be kind to your calculator. Carry it in your pack so you do not drop it. Engrave your name on your calculator and its cover so it can be returned to you if you lose it. If it signals your batteries are low, replace them right away. Bad batteries can damage your calculator and can result in the loss of valuable items you may be keeping in memory.
4. As class progresses, be thinking about the relationship of the new topic to the previous material.
5. Take good notes and maintain them as the class progresses. Teachers often give good examples in class or discuss techniques not done in the book. They can be a basis for a discussion with the teacher when you have a question. You will want these to be available when you are preparing for the next class, working problems, reading the text, or preparing for an upcoming test or exam. Taking good notes provides you with more than just a record of class. It also keeps you actively tracking the material while in class. If a question comes to mind, jot it down in the margin and make sure you ask it in class or bring it up with the instructor at the end of class. Keeping good notes is also helpful to you and your pod mates if someone misses class. Make sure your notes are complete; consult the instructor or your classmates about anything you might be missing. Keep old tests, quizzes and assignments in your notebook; these are helpful materials for review. Also, you can use these to compute your average and monitor your academic performance in your class.
6. Don't be afraid to ask questions. If you have a question, it is very likely that one or more of your classmates is thinking the same thing. It helps the teacher to know how well the class is following the material. Teachers often adjust their presentations "on the fly" in response to student questions.
7. Contribute to a productive atmosphere. Be a good citizen in class. Taking good notes, contributing to discussions and staying focused helps make the classroom experience more enjoyable and productive for everyone. Be helpful to your classmates if they miss class by offering assignments or copies of notes. Pull your weight in group projects. This will make you an effective and therefore desirable lab or project partner.
8. You should realize that class time is the time to be thinking and figuring stuff out. It is the time to do and learn math and to participate actively. You need to engage yourself in class as much as possible to get the greatest benefit from it.
Following these principles will help you to be a successful mathematics student. Below, we address three other issues that bear on classroom life.
Sometimes calculator or computer technique will be presented in class. Take detailed notes so you are able to perform the techniques on your own. If the teacher writes down a detailed step-by-step procedure for carrying the technique out, make sure you get that in your notes. If you are working in a computer lab, create a file and enter the notes into the file. This file will come in handy later when you are working on your own. Store it in a folder with other documents relevant to the class, as is suggested in the Technology section of this document, so it will be easy to find when you need it.
Staying current with your homework is critical to making the best use of class time. Most teachers will invite you to ask questions about homework at the beginning of class. Some may have you post your solutions to the problems on the board. This is a golden opportunity to get help with the material and to get feedback on your work. If you are chosen, make sure you place your problem on the board in an organized fashion so others can understand it. Having the previous problem set under control will make it easier for you to understand the new material.
Teachers often send signals about their tests during class; pay close attention to concepts and techniques that are often revisited in class, as they tend to be ones that appear on tests. The teacher will present examples and explain things that go beyond the book and make it easier to do the problems. Being aware of these things can make your life easier.
When you work in this manner, you teacher will recognize your effort. He will know because you will ask good questions and participate actively in class. It will be evident to the instructor that you have thought about the material carefully. This gives you additional credibility with the teacher.
6. How to use the tutorials. The job of the tutorial people is to help you toward the solution of problems you are working on. They can also be helpful to you in understanding big ideas and concepts. You can also go there to look in the solution manual to your textbook to check answers. To get the most from the tutorial room, bring your book, your class notes, and your calculator.
The tutors can help you to get started on a problem or problem set. They are a great resource if you have specific questions such as: How do I find the three angles in a triangle if I know the three sides? When I enter this function into my calculator, I don't see any graph. What happened? I can only get so far in this problem. What am I missing? In the case of the first question, the tutor might refer you to a section in the book to read, or explain a few things that will enable you to get started. In the second case, the tutor will look at your calculator syntax and your choice of window and help you to isolate the difficulty. In the case of the third question, the tutor might point out something you have not thought about yet. Do not be surprised if the tutor answers your question with a question! Think carefully about that question. The tutor asked it because he knows you are very likely to be able to answer it, and in turn, solve your original problem. It does you little good if the tutors just tell you an answer; in fact they are trained not to do so. They are there to provide hints, clear up confusion, and help you be able to solve the problems you are assigned.
To get the most out of tutorial, you should come with specific questions. If your question is about a problem, you should get as far as you can on your own, and ask the tutors for suggestions on what to do next. You should review your class notes and consult your textbook before or during tutorial. Sometimes this will be enough for you to master the material.
One other advantage of using the tutorials is that you will often meet students from your class or other classes who are working on the same material. You can gather with these people and work together as you would in a study group.
It does you no good if you get someone else to do your homework for you. Mathematics is not a spectator sport! The benefit of doing the homework is in the doing. It's just like going to the gym: the trainer is there to help you do the exercise properly. He can show you how to safely and properly work the machinery and to choose an appropriate amount of weight to lift. You will not benefit if he runs on the StairMaster™ or does curls for you. You must do it yourself. This analogy carries over entirely to your mathematical development. You learn and you grow your knowledge and capabilities by doing mathematics. The tutorials are there to assist you in that enterprise.
7. Preparing for tests. Poor preparation for tests is a common cause of disappointing academic performance. Here are several pointers to help you.
1. Your class notes are a valuable asset. Think about the topics you have studied; if a significant block of class time is devoted to a topic, that topic is likely to show up on the test. The teacher will give you a heads-up on the scope of the upcoming test. Information such as types of problems or sections to be covered will likely be announced. Record this in your notes.
2. Did you have any quizzes since the last test? These can be a useful source of review questions. Make sure that you understand any problems you missed. You should discuss them with your classmates, teacher or the people in tutorial.
3. Work problems in the book from the sections being tested. Look at any related end-of-chapter problems too.
4. If you have a study group, get together with them to work on problems. A useful exercise is to have everyone work the same group of problems and compare notes on the solutions.
5. Look back in your notes for example problems worked by the teacher. Work these problems yourself and compare your solution to the teacher's.
6. Remember, the teacher can be a resource, too. Visit his office and ask him to look at and comment on your solutions to problems.
7. Make sure you understand all the calculator or computer techniques required for the upcoming test. Bring your calculator and make sure its batteries are good.
8. Students with upcoming tests often come to tutorial; this is an opportunity to work with students from other classes. You can exchange old test and quiz questions and work on problems together.
9. Some students find it a useful exercise to create a one-page summary sheet on the material. This will make you think economically about the material and force you to summarize key ideas.
10. Create a practice test, perhaps with study partners, and take it under test-like conditions.
11. Get a good night's sleep before the test! Taking a test whilst non compos mentis is never a smart idea. Being rested and alert will enable you to deal with the challenges of the test intelligently and effectively.
8. Time management. To perform well in a mathematics class, you should be revisiting the material outside of class frequently. It is important to establish a good weekly rhythm and to establish a routine of study for your mathematics classes. Establishing this rhythm will make it far easier for you to prepare for tests and quizzes.
Each class should have a prepare-class-homework cycle. Before each class you should read and carefully review the section of the textbook you covered in the previous class; the new material will almost always build on the old. Make sure you do any other reading required by the instructor as well; you might be asked to read the next section or to look at a handout. After class, you will want to review your notes and complete them if necessary, look at the section in the book again, and do the homework problems. Math classes meet four or five times a week; plan on spending time on math at least as often as class meets. One reason you need to do this is that there will be homework almost every day the class meets. Between any two classes, you should:
1. Prepare for the next class by reviewing your notes and reading the section covered in the last class
2. Work the problems recommended by the teacher and write down organized solutions. Remember, what the teacher suggests is probably a minimum. You should attempt several others.
You may wish to create or join a study group. Study groups should agree on a regular time and place to meet. This will help everyone in the group establish a regular routine for working on mathematics. You will need to prepare for this activity, and this will help you to stay on top of your mathematics class.
You should create a study schedule so you allocate enough time for all of your classes. Make sure you allot time for exercise and for free time to do whatever you wish. You need time to relax and you need time for exercise. Both of these things will make your time at NCSSM much more pleasant and productive.
9. Technology. During your study of mathematics or computer science at NCSSM, you will use technology as a tool in your classes. Technology can help you to organize your materials as well as being a computational tool in your classes.
It is a good idea to have an external drive for backing up your data. You should create a master directory (folder) and keep all of your school work in that directory. This makes backup simpler. If you are using UNIX, you can create a root directory for your school work inside of your home directory. Do not scatter your stuff all over your system.
A good time to start a backup is before you go to bed.
The biggest mistake made by students in maintaining their file systems is that of keeping a "flat" file structure. A student who falls into this trap opens his file browser and sees pages and pages of files. This hapless person is endlessly doing drive searches to find documents. If you are browsing your files in a folder, and you see more than a couple of dozen files, you should think about creating directories to better organize the files. You should organize your academic materials according to trimester, then class or by class, then trimester. You should create a folder called Personal to keep personal items. Even this directory should be carefully organized to make finding your stuff simple. Finally, you should use sensible file names that are evocative of the file's contents; this makes it easy to remember what is kept where. Keeping your file system well-organized can save you a great deal of time and effort.
When you get your school computer, you should get your file system ready. Take out your schedule. Make a directory for trimesters 1, 2 and 3; go inside the trimester1 folder and create a directory for each class. Alternatively, you can also do this by creating a folder for each class and folders for each trimester inside each of these; this strategy is especially useful for year-long courses.
You should keep files containing any assignments emailed to you and any electronic materials supplied by teachers. You can also keep a list of links you regularly consult for each class in a text or HTML file. . Some written work, such as labs will be created in a word processor or a spreadsheet. Save those files in your class directories. Keep drafts of papers and labs in these directories. If you are working with a group, all members should maintain copies of joint work and synchronize them each time the group meets.
Your calculator comes with a manual. This manual is a very helpful and much underused resource. Keep it in a handy place so you can consult it. Make a point of learning a few procedures from it. You calculator is a powerful tool and the manual can help you to make the most of its capabilities.
Finally a few remarks are in order about software. Many classes will require you to use some sort of software such as Word, Excel, or MathCad to perform calculations or prepare documents. Early in the year, before you get too busy, you should devote a little time to becoming proficient with this software. Some programs, such as MathCad, have tutorials to help you get started and to guide you through the basics. Take a little time to gain skill at these software packages before having to make heavy use of them. Although it is not required for your classes, MathType, the equation editor for Word, can be a very helpful tool for preparing lab reports or papers for mathematics classes. It is easy to learn and has an intuitive interface that works seamlessly with Word. You can also prepare mathematical documents with LaTeX; this is freely available for all platforms. If you learn how to use the TI Link, you can quickly and easily embed graphs from your calculator directly into word processing documents; this allows you to store your entire lab in your file system and to print it out or email it to your teacher to turn it in.
10. Conclusion. This guide contains specific practices that will help you to succeed in your mathematics classes at NCSSM. If you apply them thoughtfully and conscientiously, you will get the most out of your classes. There is a great deal of information presented here; you should revisit this guide periodically. You will likely find it useful as you progress through the school year. Applying the principles outlined here will make you more efficient, and make your time at NCSSM more productive and more fun.