Frequently Asked Questions For Courses

Course

How are programming courses different from other courses?

  1. It is progressive. It means that later contents depends on earlier contents. It is extremely risky if you are behind and fail to catch up in the semester! Try to distribute your time evenly in the semester. Catch up immediately if you are interrupted by something and feel yourself being behind.

  2. It depends heavily on hands-on experience. Experimenting with code is always the the best way to learn in programming courses.

  3. There will always be new contents to learn. Knowing what to focus is important. Some core contents must be mastered while some details just need some brief knowledge. Knowing “why” is more efficient than knowing “what” and “how”.

Course Materials

Why should you take notes even when course notes are provided?

It is because note taking is an important process for you to learn. Finding the topics that are most confusing to you or may cause mistakes in the future is the best way to learn. The instructor will point out many confusing topics, pitfalls and most “testable” details in class and in official course notes and you should decide what applies to you and write them down with our own interpretation. General course notes are for everyone, you own note will always serve yourself better.

How to get most out of the code samples?

Programmers “write” code rather than “read” code. Code examples are not just for reading. The best way to use the code samples is to run, modify, and experiment with them.

Shall I read external materials?

External materials are always encouraged. Because there are so many details that cannot be covered in the book and notes, whenever needed, you should search in external sources. External sources include the course materials from the prerequisite courses, primer chapters in the textbook, reference books/websites, Q&A websites (StackOverflow, Quora, etc.) and of course search engines.

Should I look for external code samples to practice my programming skill?

It is recommended only when you finished all provided course materials and want to further improve yourself. The fact is that C++ is such a broad topic and most external examples you can find have some gap with the contents covered in the class. You will encounter topics not covered in the class or non-standard coding features not used in the class. This is the reason that you should focus on the provided materials first.

Communication

What is the best way to keep updated?

First of all, attend the class!

Make use of the communication tools:

  • Discord Server

  • UWF Gmail

  • Canvas Notification System

  • Canvas Announcement

  • Canvas Calendar

What communication tools to avoid?

Avoid Navigation messages and Canvas messages. They are easy to miss and are awkward to use!

What is the best communication tools in certain use cases?

Questions that can be shared with classmates

Public channels on Discord server

Questions containing personal code or questions

Discord Server Direct Message or UWF Gmail

Note

You must identify yourself by providing your course section number and your name (discord direct message does not show name) in these kinds of communication.

What are preferred types of information to provide when looking for help?

You should always include your source code! For projects, it must be something like a complete submission that the instructor or TA can directly build and run.

  • Canvas submission: Email the zip file.

  • GitHub submission: push your code and notify me by email or Discord DM

For other information like error messages or so, try to share them as text so they can be easily searched or analyzed.

What should be avoided when asking questions?

You should never provide limited information as the following types unless there is no other way.

  • Descriptions that are too general or broad like “my code does not compile”.

  • Screenshot

  • Error messages

  • Video

All of them will not help much in the problem solving.

Grading

How can I calculate my final grade accurately

At the end of the semester when all assignment and quiz grades are posted, you can trust the final grade calculated on Canvas. Before that, You should manually calculate your final grade according to the grading scheme posted both on the course homepage on Canvas and in the syllabus. Do not rely on the Canvas calculation before all grades have been posted! They are not accurate and thus misleading!

What grade to expect for each category of assessments?

It is hard but possible to target grades close to 100% in the closed-book quizzes and exams.

It is not too hard to target for 100% in all other types of assessments as long as you put a reasonable amount of effort in. You can start early and find help for challenging assignments like programming projects.

Can I appeal a grade if I find issues or mistakes?

Of course you can! Instructors and graders are all human that may make mistake. Please do it within a week after the grades are posted. There will be many administrative problems to change grades late.

Do we have extra credit opportunities for bonus points?

Yes, I am quite generous on extra credits. You can see the total bonus points on Canvas course homepage. The actual opportunities various depending on the events in the semester.

Exams

What is the most efficient way to prepare for an exam?

Efficient students usually distribute their time evenly in the semester. They try to understand the contents delivered in class right away rather than going over everything in the last week or even weekend before the exam.

What materials will be relevant in the exam preparation?

There will be practice exams and review outlines provided specifically for exam preparation. You should use them together with other course materials though.

The suggested priority of materials are:

  1. Practice exams

  2. Past exams

  3. Review outlines

  4. Course slides

  5. Course notes

  6. Code examples

The ZyBook or other textbook should be referred to whenever needed when using other materials. External materials are usually not necessary if you can make good use of the provided materials. They can be useful when you are looking for answers of specific questions.

When will the exam be given? Where can I find the exam times?

Midterms will be given during a class meeting in the exam week. The final exam schedule will follow the general final exam schedule according to the class meeting time.

The exam times will also be posted as events in the Canvas calendar. Make sure that you will check it frequently.

Are all exams closed-book?

Yes, they are! You are only allowed to use blank sheets of scratch paper. A standard calculator will be provided as part of the Honorlock plugin.

How are exams given?

The exams are given as Canvas quizzes. For exams given in class or online, you will be asked to use the Google Chrome + HonorLock plugin. For exams given online, a webcam is required and more proctoring features will be enabled.

How to handle tech issues during exams?

For exams given in class, the instructor or other proctors will help you. For exams given online, it is your responsibility to test your computer and devices beforehand to minimize the possibility of tech problems. Never try to take an online exam under unsecure environment with slow/unstable internet connection or potential interruptions. If you use HonorLock, their only support channel is the live chat on their website. You can get real-time help there.

Can I reschedule my exam because of a time conflict?

Generally no! The midterms are given during class meeting times and you should not register the class if you have time conflict with the class meeting time. The final exam schedules are know from the beginning of the semester and you should have plenty of time to arrange your time! They can also be found on the Canvas calendar. Reasons like you do not know the exam time until the last minute are not acceptable and you will not get a second chance to take the exam.

If you really cannot make it due to an emergency or unavoidable circumstances, contact your instructor as early as possible.

How are special accommodations for exam handled?

You must have the official approval first. Let the instructor know your plan before the exam if there will be special setup of the exam needed.

Project

Are projects all about coding?

No, they are more than just coding. Projects are designed to let student practice their problem solving skills. It include many aspects besides coding:

  1. Problem comprehension

  2. Design

  3. Coding

  4. Testing

  5. Clean-up and submission

All steps are important and coding is just a small portion of the whole project.

How are projects graded?

The instructor/grader will typically download/collect your submission. Put it in an environment compatible to the SSH server (Linux). Build it using make or g++ (entry-level course only) in the command-line interface. Run and test the functionality. Anything not compilable in the environment will be considered as “not working” and you will lose all points related to both building/compilation and functionalities, which usually consists >70% of the total. An uncompilable project will give you < 30% of grade even though you have written hundreds of lines of code.

Why my submission compiles on my computer but is considered “Uncompilable”

It is because compilation is environment dependent. You have to ensure that your code will compile in the compatible environment to the grader. It is not possible for the grader to learn how you compile every time. We will require students to comply to a common standard.

If you are using environment like WSL, Mac OS, or Linux, you should be fine and do not need to test your code in the SSH server. If you are using Windows with MinGW, you should test your code in the SSH server before submission.

What environments should I avoid when working with modular projects?

All environments that do not allow the use of GNU make should be avoided. They include any single-click-run environment/tool like jGrasp, Run and Debug tool of VS Code, OnlineGDB, etc.

All environments that are not compatible to GCC should be avoided. The include MinGW (git bash), CygWin, Microsoft Visual C++. As an exception the LLVM compilers used by default on Mac OS is compatible to GCC in our courses.

Can I get partial credit on code that does not run?

Code entities like classes, methods or functions are graded only when they are executed when your program runs. For complex projects, all functionalities are tested by running your code. The grader has no responsibility to read your code and grade based on that. Thus, do not expect partial credit if your code cannot be tested because your project does not compile or the code entities like classes or functions are never invoked in your program.

What is the late policy?

There will be a two-day grace period after the due date of all projects and checkpoint projects. Late penalty will apply. Any submission after the grace period are not accepted as the solution are usually posted after that.

Do not email your late submission! Simply submit to Canvas as normal. For GitHub submission, push to the repository.

Can we work in group on projects?

Yes. It is a good idea. You can share ideas, discuss useful patterns, helping each other to debug, etc.

You SHOULD NOT copy and paste large chunks of code, send finished files, or even send projects directly. Everybody should have the chance to write their own code of the whole project.

How are plagiarisms checked in projects?

As a type of assignments that can be copied easily, code duplication in programming projects will be periodically checked using professional tools like MOSS. These tools will check for duplicate logics ignoring changes of names and orders. You will get a zero if a major code duplication is identified. Thus, do not share finished work or large code snippets with other students or copy/steal from other students as well as any other online resources. Sharing of small reusable code snippets like patterns taught in the class are allowed.