“Teach C”
Steve Jobs track of I-Know-Vention
Steve Jobs track of I-Know-Vention
Objectives:
(Long term)Teaching C through a good book
and by using a sophisticated platform.
(Short term) Learning C from “C programming language” by K & R and learning Ch-platform
(Immediate) Developing Spoken tutorials on the topics in K&R and text book companion by using Ch / GNU platform
(Short term) Learning C from “C programming language” by K & R and learning Ch-platform
(Immediate) Developing Spoken tutorials on the topics in K&R and text book companion by using Ch / GNU platform
What you have to do:
Download students’ version by stating that
you will use it for learning-teaching purpose. It is free (as in freedom).
Understand the sophistication in the IDE that will help acquire C skills.
Get “C programming language” by Karnighan
and Ritchie (K&R). Its not so costly, also available at various sites from
where could be downloaded at no cost. Answer book is the solution of the same.
Example site: http://anshulmalik.net/ebooks/download-the-c-programming-language-pdf/
Example site: http://anshulmalik.net/ebooks/download-the-c-programming-language-pdf/
Learn what is Spoken Tutorial and how to
create it from the site: http://spoken-tutorial.org/
See Spoken Tutorial http://www.spoken-tutorial.org/script/index.php/C_with_GCC
See Spoken Tutorial http://www.spoken-tutorial.org/script/index.php/C_with_GCC
Follow the methodology and create spoken
tutorial on any one of the topics in the following list.
The topics will be allotted on the first come basis. At the most two teams could share a topic and create a spoken tutorial on the same independently. The team leaders (teacher-coordinator of the team) are requested to send an email to ambujas@gmail.com to confirm the availability of the topic.
The topics will be allotted on the first come basis. At the most two teams could share a topic and create a spoken tutorial on the same independently. The team leaders (teacher-coordinator of the team) are requested to send an email to ambujas@gmail.com to confirm the availability of the topic.
The team also has to solve the exercises on
the same topic that are given in the K&R book by using this new platform.
The spoken tutorial + the solution of the
exercises together will form your submission that will be considered for the
evaluation while announcing the winner of the Steve Jobs trophy on 18th
February 2013. Submission is possible on or before 16th
February.
The marks obtained for submitting the
Spoken Tutorial on C using the sophisticated platform provided by
Softintegration would carry weight in counting the score of the general championship
of I-Know-Vention 2013
Thanks and all the best for
e-content-creation and for winning SJ trophy…
List of topics:
1. What is programming? 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. Introduce the terms: source code,
compilation, run, syntax and semantics, errors and how to remove them on windows
and Unix / Linux platforms; Give illustrations and create interesting
assignments that would speak for the errors.
3. A C program: 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. Introduction to discrete variables and the
assignment operator: Explain the concepts with the help of the entities they
know in the real world; Next, introduce arithmetic operators, increment and decrement
operators; Illustrate some widely known difficult computations and demonstrate
the accuracy of the results when programmed; Generate a list of such
assignments; Also, explain the capacity of a variable to hold the data and show
how it is dependent of the platforms (hardware and software).
5. Assignment, equal and equivalent:
Meaning of the terms, interesting illustrations, availability in C and other
languages, introduce a 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; the definition is
dependent of what you perceive as an order. The learner may select the
definition and see the effect, 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. Operator precedence: Illustrate its
importance and create practice examples
13. 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)
14. Program memory organization: Explain
the existence of stack and heap in real (non-programmimg) world, Introduce the
terms data segment, stack segment and code segment in the programming context; show
how the memory allocation takes place in C.
15. 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.
16. 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.
17.
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.
18. 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.
19. 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.
20. 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.
21. Input / Output: textstream...
#include<stdio.h>
22. Formatted input-output: Impressive
illustrations and realistic exercises
23. Escape sequences: Illustrations and
exercises
24. Integer and floating point arithmetic:
Comparison, applications of the both, illustrations and exercises
25. 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.
26. Infinite loop, break and continue:
Illustration, applications and exercises
27. while and for: Comparison and
applications, conversions; exercises on the same
28. Files: File interface, illustration,
application and exercises
29. String processing: #include <string.h>
30. Lists / Arrays: Illustrations, applications
and exercises
31. Pointers: Illustrations, applications
and exercises
32. Memory models: Tiny, small, medium,
compact, large and huge
33. Call by value and call by reference:
Comparison, illustrations and exercises
34. Sorting-1: 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.
35. Sorting-2: 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.
36.Sorting-3: 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.
37. Searching: Develop a tool that accepts
the data from user, also accepts the key and show graphically the step-by-step
process of linear search; While searching, 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; Its good if the tool generates a graph
of ‘the data size’ against ‘the number of computations involved’ in searching;
Better if the tool also explains / interprets the characteristic.
38. Searching: Develop a tool that accepts
the sorted data from user, also accepts the key and show graphically the
step-by-step process of n-ary search; While searching, 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; Its good if the tool generates a
graph of ‘the data size’ against ‘the number of computations involved’ in
searching; Better if the tool also explains / interprets the characteristic.
39. Merging: Develop a tool that accepts
the sorted files from user, shows graphically the step-by-step process of
merging; While merging, 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; Its good if the tool generates a graph of ‘the data size’
against ‘the number of computations involved’ in searching; Better if the tool
also explains / interprets the characteristic.
40. Hashing: Develop a tool that accepts
the data, hash-function and a key from user, shows graphically the step-by-step
process of creating and look-up in hash and hash-search; While doing so, 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; Its good if the
tool generates a graph of ‘the data size’ against ‘the number of computations
involved’ in the process; Better if the tool also explains / interprets the
characteristic
41. Hashing: Develop a tool that accepts
the data, hash-function and a key from user, shows graphically the step-by-step
process of creating and look-up in hash and hash-search; While doing so, 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; Its good if the
tool generates a graph of ‘the data size’ against ‘the number of computations
involved’ in the process; Better if the tool also explains / interprets the
characteristic
42. Time complexity of an algorithm: ???
43. Scope of the variable: behaviour of
local, global, static, auto, extern variables with the reasoning, pros and cons.
A variable can be defined more than once as long as the declarations are
consistent. Variable cannot be defined many times (it produces linking error).
Extern is explicit declaration to mention that the definition is elsewhere.
Initialization is explicit declaration with the definition at the same place.
44. 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.
45. 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.
No comments:
Post a Comment