Teach C: Contest for creating a teaching aid to teach the first course programming using C.
Instructions: PPTs are strictly prohibited. Creating e-learning resource should be an aim. You may develop some live models, analogies, puzzles, games etc., capture the demonstrations of your models in videos and create a full fledge learning resource out of it. Use of FOSS and reuse of the available parts is encouraged with due acknowledgement of the original resource. Display of the aid should not have any specific investment of the hardware or software. It should be ready for download / copy and play. It would be good if you could facilitate interactive learning and equip the learner with an interesting feedback mechanism that is embedded in your product. While designing an aid to illustrate the concept in i-th topic, you may assume that the learner is done with the previous (i-1) topics in the sequence given below. For the first topic, no programming background is assumed. The material you will produce must be in sync with “C programming language” by K&R. The differences of opinion if any, need to be clarified explicitly.
Select one of the topics in the following list of available (already selected ones are marked). Prepare a teaching aid. The expectations and some guidelines are provided. You may use them, develop something richer.
1. Why should we learn C? Do not list out the merits and demerits; Prepare some catchy and informative live demo, clip etc., that should speak for itself; Tell the learner from where to download and how to install C on different platforms.
2. C Programming: Introduce the terms: source code, compilation, run, syntax and semantics, errors and how to remove them on windows and Unix / Linux platforms; You may create a Spoken tutorial on it in order to support your illustrations of analogies of the new terms in the real, non-programming world that they know already; Create some interesting assignments that would speak for the errors.
3. A C program: A Spoken tutorial on how to write a C program will do; Skeleton of a C program needs to be explained; This is a place where the power of programming can be introduced; Create some interesting real life illustrations and assignments that involve only display statements.
4.Variables and the assignment operator: Explain the concepts with the help of the entities they know in the real world; Creating a visual aid helps better understanding; Next, introduce arithmetic operators, increment and decrement operators; Illustrate some widely known difficult computations and demonstrate the accuracy of the results when program-ed; Generate a list of such assignments; Also, explain the capacity of a variable to hold the data and show how is it dependent of the platforms (hardware and software).
5. Assignment, equal and equivalent: Meaning of the terms, interesting illustrations, availability in C and other languages, tool for practicing these concepts
6. Comments and declarations: What are they in the real world? What is their role in programming? What are the ways that they are available in the programming world? Bring the range to the notice of a learner and illustrate how it caters the diverse applications’ requirements; create some thought provoking questions to test the understanding of the students after taking this tutorial.
7. Concrete Vs. Abstract data types: Create Audio-visual demos to explain these two concepts; provide a practice session on the data types in C.
8. Declarative Vs. Imperative programs: Create illustrations and explain how the declarative and imperative computers work. Explain why C is an imperative programming language.
9. Functions: The dictionary word, interpretation in real world and interpretation in Mathematics, signature of a function, functions in C, and functions in other languages; ‘main’ is a function; necessity of main, necessity of other functions, introduction to built-in functions and header files; Interesting demos only by using the built-in functions and, a list of assignments could be created.
10 macros and pre-processing: Dictionary meaning of the terms, examples of real life usage of the terms, examples in programming world, the case of C programming, introduction to #define and tool to practice this concept; difference between functions and macros.
11. Relational operators: Create an audio-visual aid to explain the concept of ordering; Show how definition of order changes with the data types. Rather, the definition is dependent of what you perceive as an order. Develop an interactive aid to let the learner digest this concept of ordering. The learner may select the definition and see the effect, let the system not accept if the learner doesn’t make placement in consistent with the selected definition; Better, if the tool facilitates the learner to construct her own definitions of order and see the effect; Introduce the concept of relational operators in this context, introduce the relational operators in C, Create an interactive practice session for developing understanding about all the relational operators in C.
12. Logical operators: What is a logic system? N-valued logic and value of an expression; Boolean as a special case, i.e., 2-valued logic and truth value of a statement; Functions Vs. Predicates, create an interactive practice session to play with these concepts; Discuss the semantics of predicates AND, OR, NOT, Ex-OR and their corresponding syntax in C, Comparison with the semantics of these words in English; Shift operators; Develop an interactive tool that allows the user to construct a Boolean expression and computes its value, conversely, the tool will generate a Boolean expression and verify the user’s response.
13. Selection structures: Selection structure and decision point, real life examples – maybe cartoon stories to explain how many times we come across the decision points and how many are the possible ways one can see to resolve the issues; Generating a decision tree to model different decision paths of different pay-offs; Discuss different ways of modelling the decision points in C; Develop an interactive tool that displays a tree as per the given specifications and generates an equivalent C statement to represent the portion that the user selects. Conversely, given a C statement, the tool may display the equivalent decision tree; Comparison of else with logical OR.
14. User defined functions: Monolithic Vs. Modular approach in general, prepare a demo of real world applications of these terms; show differently how would you make pupils appreciate the modular over monolithic; Come to the programming world, develop an understanding about the need of modular approach of programming, take examples of some fascinating projects and provide visualization of them in parts, Discuss the range of modularity available; Come to the C programming, show how to write your own functions and use them in a program, save them in a header file and share the definitions in diverse applications. Create a list of interesting assignments (should not involve complex data structures and difficult logic, see to that they involve enough non-trivial and catchy topics)
15. Program memory organization: Prepare a multi-media presentation to show the existence of stack and heap in real (non-programmimg) world, use animation to explain their behaviour; Introduce the terms data segment, stack segment and code segment in the programming context; Illustrate graphically how the memory allocation takes place in C.
16. Scope and life of the variables: What are declaration, definition and Initialization; introduce the terms compile time and run time; illustrate local, global, auto, static and extern variables; Show how to trace their existence in memory and hence comment on their behaviour; Comment on the pros and cons of using each of them; Develop a tool that gathers variable definitions in a programme and displays the state of memory at a given point.
17. Iterative structures: What is iteration? Find out some funny ways of introducing what it meant by doing a thing again and again. Why do we do so? Why not a human being? Why computers should be employed for these jobs? Select examples, demos to make it appealing! Introduce how a C program can be written to instruct a machine to do a particular activity repeatedly; what are the other ways in C to do the similar things? Give some assignments that involves iterations and they are sensible tasks in the real life.
18. Variety of iterative structures in C: Select appealing real life examples to illustrate when to prefer which structure; Develop a game to train the students to select an appropriate iterative structure in a given a situation / problem; System should provide feedback to the learners and help them improve their understanding about the functioning of the different iterative structures.
19. Indenting and bracketing: Semantics of white spaces, flowery brackets, rectangular brackets and round brackets in C and some other languages; beautification for readability and readability for maintenance; standard good programming practices; You may conduct interviews of the professional programmers, gather data from the experiences that have been shared on the social networking sites, read project manuals, generate inputs on your own; Your efforts should be reflected in your teaching-aid. Presentation should be such impressive that the learner should subscribe to your ideas.
20. Implicit and explicit type conversions: Discuss typed Vs. Un-typed languages, strong Vs. Weak type-checked languages, static Vs. Dynamic type-checked languages; type-checking and safety; Develop a tool to classify the language depending upon the error pattern in mixed data-type operations and vice-versa i.e., given the class of a language and an expression involving operands of the mixed data types, generates an error if any; the type checking and conversion mechanism in C; flexibility and concerns.
21. while and for: Develop a tool that reads a for structure and produces equivalent of it by using the while structure and vice-versa.
22. Generate-n-test Sort: Develop a tool that accepts the data from user, also accepts the definition of order and show graphically the step-by-step process of sorting using brute-force or generate-and-test approach for sorting; While sorting, the tool must show the number of comparisons and assignments that took place in the process; It must have ability to take small and big datasets and sort them; Its good if the tool generates a graph of ‘the data size’ against ‘the number of computations involved’ in sorting; Better if the tool also explains / interprets the characteristic.
23. Bubble Sort: Develop a tool that accepts the data from user, also accepts the definition of order and show graphically the step-by-step process of sorting using Bubble-sort algorithm for sorting; While sorting, the tool must show the number of comparisons and assignments that took place in the process. It must have ability to take small and big datasets and sort them; Its good if the tool generates a graph of ‘the data size’ against ‘the number of computations involved’ in sorting; Better if the tool also explains / interprets the characteristic.
24.Quick Sort: Develop a tool that accepts the data from user, also accepts the definition of order and show graphically the step-by-step process of sorting using Quick-sort algorithm for sorting; While sorting, the tool must show the number of comparisons and assignments that took place in the process; It must have ability to take small and big datasets and sort them; Its good if the tool generates a graph of ‘the data size’ against ‘the number of computations involved’ in sorting; Better if the tool also explains / interprets the characteristic.
Following are few more topics for which teaching aids can be developed. Guidelines and expectations will be provided if you are interested. Of course, suggestions from your side are welcome.
1. Operator precedence
2. Input / Output: Roll of <stdio.h>
3. Formatted input-output
4. Escape sequences
5. Integer and floating point arithmetic
6. Infinite loop, break and continue
7. Files
8. String processing: Roll of <string.h>
9. Lists / Arrays
10. Pointers
11. Sort using pointers
12. Memory models: Tiny, small, medium, compact, large and huge
13. Call by value and call by reference
14. Searching
15. Merging
16. Hashing
17. Time complexity of an algorithm
2. Input / Output: Roll of <stdio.h>
3. Formatted input-output
4. Escape sequences
5. Integer and floating point arithmetic
6. Infinite loop, break and continue
7. Files
8. String processing: Roll of <string.h>
9. Lists / Arrays
10. Pointers
11. Sort using pointers
12. Memory models: Tiny, small, medium, compact, large and huge
13. Call by value and call by reference
14. Searching
15. Merging
16. Hashing
17. Time complexity of an algorithm
No comments:
Post a Comment