The following notes represent some on my thoughts about this course.
Why learn C++?
C++ is programming language that is very much in demand today, probably the language that is in most demand currently. It will definitely be a plus to have it on your resume.
What does the class cover?
CIS27 is a basic C++ class. Upon successful completion, you should be able to write C++ code, to read it, to use C++ reference manuals, and to step into an entry-level C++ programming situation. This is not an advanced class. It does not cover templates, exception handling, the Standard Template Library (STL), RTTI, writing your own manipulators, binary trees, and object oriented programming concepts. It is the basics, the language syntax, as well as language concepts. There are separate courses for the advanced concepts and object oriented programming.
What are the prerequisites?
Successful completion of a C programming class. That means a grade of A, B or C in such a class. You do not need any significant C programming experience, but you do need to be familiar with the basics, such as, variables, data types, for loops, while loops, input and output, file I/O, pointers, arrays, string functions, and basic ANSI standard functions. Do not expect to successfully complete this class without some C experience.
How can you be successful in this class?
"Successful" probably means an "A" in the class. An "A" means you can put it on your resume. It means that you could step into an entry-level C++ programming position and produce code within a short time. A "B" means that you missed a little, but with a little study and work you can be right there with the "A" types. A "C" means that there's hope, but you'll need to put in some time to catch up to the "A"s. Any other grade should repeat the course, probably after some C programming review. You're may be taking this class to help you get (or keep) a job. It's the "A"s that stand the best chance.
Now, back to the question. This class is 12 weeks long. It is a fairly short time commitment. You can be successful by doing the following:
- Meet the prerequisites. Make sure you're comfortable with C. During the course, if you hear of a C concept that you are not familiar with, research it, or ask about it and get it.
- Commit the time required for this course. You will need approximately 8 to 12 hours per week outside of class to complete the assignments and do the suggested reading. If you don't have the time, or don't commit to it, don't plan on an A or B in the class (and there isn't that many Cs received).
- Come to class and be on time. Students who are on the road to "success", but have to miss a class, usually get behind. This probably translates into a full letter grade. If you "have to" miss a class session, plan on doing lots or reading and studying to make it up. Punctuality is especially important during the final and midterm. The tests have time limits. Final grades have dropped a full letter, because students showed up late for a test and didn't have enough time.
- Get and read a textbook. The course notes are not a text book. They do not contain detailed explanations of C++ concepts. You should acquire a source for explanations beyond the examples in the notes. Check Appendix B for some possible books.
- Do every assignment. Start early. Learn to break up the problem into small parts. Do one part at a time. Test your code as you proceed. This is particularly relevant when you start writing classes and member functions. If the assignment involves writing 2 classes, then do one at a time. Write one member function at a time, and test it. Make sure you understand what each part is supposed to accomplish. It not, ask. When you get stuck, try to solve the problem yourself. When you still can't get it, ask for help (see below).
- Study for the tests. The tests are open book, but that's not the time to start reading. You should know exactly what topics are on the test. Do you know each one, or not? It's fair to ask for an explanation of some topic before the morning of the test. To study for a test shouldn't take long if you've kept up. You should be able to look at a list of topics, think about them, and consider whether or not you thoroughly understand the topic. Is there some syntax or notation that you do not understand about that topic?
- Ask questions. In class and out of class. It's difficult to concentrate for 2+ hours of lecture (no matter how brilliant and entertaining the instructor is). You need to psyche yourself up to endure this. A good night's sleep the night before, some Starbuck's coffee, whatever it takes…
- Use the lab time for some extra help, hand holding, showing you how to do it, explaining some concept in detail, giving you a hint on an assignment.
- Talk to other students in the class about assignments, problems or various topics. This does not mean copying. This is not a course to practice typing or copying files. You are encouraged to discuss problems with other students, but not to copy their solution. This is just like a programming job. You will probably consult with coworkers regarding problems, but you cannot expect a coworker to do your work for you. If you need a hint on an assignment, ask the instructor. Remember, you will be taking the tests by yourself.
- Asking Email Questions
- You will need to ask a question (probably several) during the course. Do not hesitate to send me an email question. You should get a reply with 24 hours. Make sure you do get a reply, if not, send the question again, and if necessary, call me up. It's important that you understand what is a "fair" email question, a what is not.
- It's fair to ask me to explain line 19 of example 2-5 or to explain what is meant by the 4th paragraph on page 317. It is not fair to ask to explain all 450 lines of example 2-7 or describe in an email note how constructors work or explain chapter 7 in the text. It is fair to ask what a copy constructor is.
- What is causing this error message: "Call to undefined function: strcopy()" on line 54 of my classX::funk() function? (The code is included)
- What is the purpose of the goo() function in the XYZ class?
- Can you give me a little hint about how to start writing the moo() function for ABC class?
- Did we have an example similar to the poo() function?
These are "unfair" questions to ask about an assignment:
- I don't understand what to do?
- How do I get started?
- I don't understand classes?
- How do I write the moo() function for ABC class?
- What is causing this error message: "Call to undefined function: strcopy()" on line 54 of my classX::funk() function? (The code is not included)
- I've got a whole bunch of error messages, what do they mean?
- What do these 3 error messages mean (messages included)? (2 is the limit)
- Can I turn the assignment late?
When you submit an email question about an assignment, make sure you include all relevant parts of your code. If you're not sure whether or not to include part of your program, then include it. I would prefer that your code is included in the body of the note. If you want to use an attachment, my first preference is one file attachment (even though you may have a multi-file application).
要如何成功學會 C++? 努力,努力, 再努力!!
沒有留言:
張貼留言