COMP1501 Things You Should Be Able To Do (Program in Java (Describe the…
COMP1501 Things You Should Be Able To Do
Think "algorithmically" and solve problems
Define "algorithm" and identify the 3 properies of good ones
List the steps of solving a problem algorithmically
List strategies to help with problem solving
Analyze and explain algorithms for solving simple problems
here's an algorithm - explain what it's doing / what problem it's solving in plain English
here's a problem and an algorithm...does the algorithm solve the problem?
Apply problem solving strategies to create algorithms for solving simple, well-specified problems.
here's a problem - what algorithm would you make that solves it?
can you create your algorithm with just pseudocode? or a mix?
Describe the relationships between algorithms, programs, and computers.
Program in Java
Analyze and explain the behaviour of simple programs involving fundamental programming constructs...
this is basically saying "trace code that can contain these things"
of code, executed in sequence
named procedures (methods/functions) with parameters
Describe control-flow and effect of each of the fundamentals
"can you follow the flow of a program from start to finish, even if it branches or loops?"
"can you describe what each line in a program
Describe the issues associated with variable scope, lifetime and initialization, including the mechanics of parameter passing.
what happens when you declare a variable? initialize it? assign a value to it?
how long does a variable "live"?
what's the difference between a global and local variable?
is a parameter a local variable? how so? how not?
how do pimitive parameters and reference parameters act differently?
Trace, systematically, the execution of simple programs that use the fundamental programming constructs above, keeping track of program state and output.
Modify and expand short programs that use the fundamental programming constructs above.
"if you were given some code, could you modify/expand it to behave in different ways"?
Choose appropriate variables for a given programming task.
"Are you able to name all the primitive and reference types we've used this semester - and know when you should use them?"
Choose appropriate conditional and iteration constructs for a given programming task.
What conditional statements have we covered?
What's the difference between stacked and nested conditionals?
How are your Boolean expressions, especially when complex conditions are involved?
"Iteration construct" is just fancytalk for loop...what kinds have we covered?
Though the different types of loops are interchangeable, there is often a "traditional" choice for certain tasks. Do you know what they are?
Design, implement, test and debug programs that use the programming constructs above.
This is what assignments are all about.
Apply the techniques of structured decomposition to break a problem or program into smaller pieces.
"Can you break a large problem into smaller ones?"
"Can you take a big method and chunk it into smaller helper methods?"
Identify recurring programming problems within a program’s design, and employ named procedures and parameters to avoid code duplication.
I think this means "can you spot duplication in code and create methods to capture this duplication?" It's a bit vague, this is.
Explain the concept of encapsulation, and identify language facilities that enable it.
I didn't really cover this; you'll cover it again in 1502. I'm a bad person.
Describe and apply simple testing strategies for ensuring that a program behaves as expected.
Test first (by writing client code).
Describe and apply simple debugging strategies for locating and fixing program errors.
This has mainly consisted of "do hand traces", "use trace statements", and "if you have a stack trace, actually read it and do the 'start-at-the-top-of-the-trace-and-read-down-until-you-find-your-code' thing"
Describe and apply the common operations on each of the data types above, including arithmetic operations, string operations, relations and logical operations, conversions, and collection manipulation and indexing.
Write programs that make appropriate use, for information representation, of each of the data types above.
Confession: I do not know what this means.