ELEC 278 - Fundamentals of Information Structures and Software Engineering - Winter 2013

Frequently Asked Questions

Updated and modified from previous offerings of this course.

FAQ 1:

 

Where can I go for help with this course ?

 

 

Ans:

Start with me. If it's a quick question, you can usually catch me at the end of a lecture. Of course, you can always send me an email.

 

Direct your questions about the labs or assignments to the TAs, either by email, during tutorials, or in the labs. You can also ask them for advice on the course material.

 

If you are having general programming difficulties, then the lab TA is the best place for help. Another good option is to ask one of your classmates for help.

 

 

 

FAQ 2:

 

What’s the best way to do well in this course?

 

 

Ans:

There is no shortcut to do well in this course. One thing that will definitely help is to make an effort to do all of the labs and the assignments.

 

One of the best ways to learn about data structures and algorithms, and software in general, is to gain experience implementing solutions. The labs are the main area to get practise in the material that is relevant to the course. The assignments are based upon the labs, and are often extensions of the ideas encountered in the labs. The quizzes and exams both have programming questions on them that relate to the assignment material.

 

People who make a devoted effort to both the labs and assignments tend to do well on the exams.

 

Attending lectures and tutorials will also help, as this will help you identify the material that is emphasized.

 

All of the lecture notes are online, and the text is a very good resource. One strategy is to attempt to read the relevant sections of the text and review the lecture notes prior to the lectures. This way, instead of being exposed to the material for the first time during the lecture, the lecture will act more as a review of material that you have already seen.

 

 

 

FAQ 3:

 

Do we do any programming in this course?

 

 

Ans:

By the time you reach this course, you should already have taken a number of introductory courses in programming, and you should have a basic level of proficiency in 'C' and Java. The course is therefore not about programming. Rather, it is about the fundamental concepts of Data Structures and Algorithms that are essential for a solid understanding of any software solution. Some Object Oriented techniques are also covered.

 

Having said this, there is arguably no point in having a purely theoretical understanding of the course material. To understand the concepts that are presented, is to implement them in software. The course therefore has both a theoretical and a practical aspect to it.

 

Besides, programming is fun, right?

 

 

 

FAQ 4:

 

Do I need to go to lectures?

 

 

Ans:

Some people are in the habit of not attending lectures, and they learn the material directly from the text and the Web notes. In the past offerings of this course, some of these people have done well, although the majority of those who did not attend lectures did poorly. Conversely, those who achieved the highest marks attended lectures regularly. It is likely that those who attend lectures would have achieved a better final grade had they attended regularly.

 

So it really depends upon what you want to achieve. If your ambition is to simply pass the course, then you may be able to learn enough to pass without attending lectures. Alternately, if you would like to learn the material thoroughly and get a high grade, then your best strategy is to attend lectures.

 

 

 

FAQ 5:

 

Do I need to go to tutorials?

 

 

Ans:

Tutorials as the best way to get the “inside scoop” on what material is emphasized in the course. Exercise questions and old exams are solved, which gives a strong indication of what we feel is important material.

Also, quizzes are held in tutorials, which are worth marks (20% of the final grade).

 

 

 

FAQ 6:

 

Do I need to go to labs?

 

 

Ans:

At the end of each lab, your work will be reviewed by a TA, and you and your partner will be assigned a mark. These marks contribute toward your final grade, and the only way to accumulate these marks is to attend the lab.

 

Also, the labs lead into the assignments, often reusing the same code. Attending labs will therefore give you a head start on the assignments.

 

 

 

FAQ 7:

 

Do I have to go to my assigned lab section, or can I go to any of the labs?

 

 

Ans:

Yes, please attend your assigned lab section. One of the main benefits of going to the lab is that you can get help from interacting with a TA who knows the material. There are an equal number of TAs in each lab section, so if the number of students in a given section becomes large, then the TAs will be spread thin in that section, and it will be difficult to give people the attention that they would like. The best way to ensure that everyone has equal access to the TAs is therefore to attend your assigned lab section.

 

 

 

FAQ 8:

 

Do I have to have a lab partner, or could I do the labs on my own?

 

 

Ans:

There are 2 benefits to doing the lab with a partner. The first is that everyone has different programming styles, and so it is a good way to learn from your class mates. The second is that the TAs are a limited resource. Many people have questions for them, and if there are a large number of individuals (as opposed to teams), then it simply increases their workload, and reduces the amount of attention that they can give to everyone.

 

So please team up with a partner on the lab. Also, you can read online about the benefits of pair programming. :)

 

 

 

FAQ 9:

 

Do I have to have the same lab partner for the entire course, or can I switch partners?

 

 

Ans:

You can have a different lab partner every time, if you like.

 

 

 

FAQ 10:

 

I didn’t take CISC 212. Could I take this course and CISC 121 (in place of CISC 212) at the same time?

 

 

Ans:

No.

 

Elec 278 requires that you have a strong programming background. If you attempt Elec 278 without a sufficient foundational knowledge in programming (i.e., more than High School), then you will get behind quickly. You are better off taking CISC 121 this term, and defering Elec 278 until next year.

 

 

 

FAQ 11:

 

I took CISC 212, but I failed it. I am taking CISC 121 this term. Could I take this course at the same time?

 

 

Ans:

No.

 

If you failed CISC 212, then chances are that you don’t yet have the progamming skills necessary to succeed in Elec 278. You are better off taking CISC 121 this term (or better yet, CISC 212 again next Fall), focussing your energies to learning the material well, and then taking Elec 278 next year.

 

Proficiency at programming is a very distinct skill set, involving elements of both mathematics and natural language. Different people catch on to these concepts at different rates and stages. Difficulties in an early programming course does not mean that you won’t eventually succeed, and even possibly excel, at programming. Alternately, if you are having troubles, and you try to rush the process by taking too many software courses at once, your chances of success will diminish. Furthermore, this strategy may have a negative effect on your other courses, as you expend more energy with fewer returns, on the subject that you are having trouble with.

 

 

 

FAQ 12:

 

What’s on the exam?

 

 

Ans:

Everything that is covered in the course is potentially on the exam.

 

I only address questions about the exam content or format to the entire class, and not to individuals. This is the fairest system, as everyone (who attends class) gets the same information.

 

I answer all questions in class about the exam format. The midterm and final exams are in exactly the same format, so that the final exam format is not a surprise. The format is the same as in previous years, which has proven effective.

 

I typically do not answer questions about the potential content of the exam. The best place to check is previous year's exams, which are available through the usual sources.

 

 

 

FAQ 13:

 

Is there a programming question on the exam?

 

 

Ans:

Yes, both the midterm and final exams have at least one programming question. It is difficult to do well on the exam (and in the course) without knowledge of programming.

 

 

FAQ 14:

 

Why do I need to learn about software, anyways? After all, I’m studying Engineering, not Computer Science.

 

Ans:

Knowledge of software is important in every branch of Engineering, but it is particularly important in Electrical and Computer Engineering. Since around 1950, the discipline of Electrical Engineering has embraced and extended computing and software. Today, computing and software are central to almost every aspect of Electrical and Computer Engineering, and indeed much advanced “hardware” design is done completely in software.

 

A strong theoretical knowledge of software and computing and an advanced level of programming proficiency are essential for practising Electrical and Computer Engineers today.