0% found this document useful (0 votes)
43 views4 pages

Practical Guide to Python Programming

The document provides suggestions for a practical computer science curriculum consisting of 5 sections: 1. Python - Starting with Learn Python The Hard Way and optionally An Introduction to Computer Science, followed by practice projects and using PyGame to build games. 2. Java - Learning data structures in Java and undertaking Android application development. 3. C - Learning C using The C Puzzle Book and assignments, then developing an instant messaging tool requiring Unix networking skills. 4. C++ - Writing concurrent programs using Concurrency in C++ and corresponding assignments. 5. Functional programming - Learning Scala using tutorials and optionally Haskell using provided resources.

Uploaded by

plycion
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
43 views4 pages

Practical Guide to Python Programming

The document provides suggestions for a practical computer science curriculum consisting of 5 sections: 1. Python - Starting with Learn Python The Hard Way and optionally An Introduction to Computer Science, followed by practice projects and using PyGame to build games. 2. Java - Learning data structures in Java and undertaking Android application development. 3. C - Learning C using The C Puzzle Book and assignments, then developing an instant messaging tool requiring Unix networking skills. 4. C++ - Writing concurrent programs using Concurrency in C++ and corresponding assignments. 5. Functional programming - Learning Scala using tutorials and optionally Haskell using provided resources.

Uploaded by

plycion
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
  • Python
  • Android Development
  • Java
  • Functional Programming
  • C++
  • C

Suggestions for Practical Computer Science

November 12, 2012

1
1.1

Python
Learn Python The Hard Way

For a concise introduction to programming in Python, the student begins with Learn Python The Hard Way by Zed A. Shaw, which contains 52 short chapters, each in the form of an exercise, covering the basics of coding. By its completion, our the student will have understood: Data types (e.g. strings and integers) Functions and variables Boolean logic Loops Elementary data structures (e.g. lists and dictionaries) Object-Oriented programming concepts (e.g. inheritance) The second half of the book provides ample practice which includes a web program and a game. The book is both well-known (and as such has its exercises mentioned in various forums and question-answer sites) and freely available online.

1.2

An Introduction to Computer Science

For a more technical and detailed introduction to computer science, Python Programming: An Introduction to Computer Science by John M. Zelle may be used, albeit as an alternative to the previously mentioned title.

1.3

Practice

For the student to become comfortable with expressing instructions in code, a collection of short projects is suggested for practice. These include detailed assignment overviews and sample input/outputs.

1.4

PyGame

Using what the student has learned so far, she may now implement a larger project of the game kind, and to this end Invent With Python, which is freely available online, serves as a step-by-step guide to exploit the power of PyGame for the creation of games, which may include graphics beyond the text-based.

2
2.1

Java
Data Structures

A transition to C-syntax languages, data structures will be studies in Java, arguably the bridge between Python (and other high level languages) and the lower lever, C-derived languages. For this purpose, the student will complete a selection of labs and assignments, utilizing both Java as a language, and an understanding of elementary data structures; as supplementary material, which should be used to base solution upon, Data Structures & Algorithms In Java will be used. It is important to note that the purpose of this project is to become comfortable with Java, and data structures are simply clear means by which that can be achieved.

2.2

Android Development

To provide the student with substantial experience with Java programming, Android application development is undertaken. Given the ubiquity of Android tutorials, it is not surprising to have freely available a source so comprehensive and friendly as Learn Android Development From Scratch!. To ensure the student uses intelligent development patterns, Androids Best Practices is suggested as a source upon which to base her implementations.

3
3.1

C
The Language

The knowledge which the student has hitherto accumulated provides her with a mere glimpse into computer programming. While higher level languages provide secure and often nimble development tools, and thus may be preferable for most projects, skill and control may most easily be derived by exercising the power of C. The technical nature of C does not disallow fun and games; in fact, the book suggested as the main reading is The C Puzzle Book. It is only as a supplementary text that the classic C Programming Language is suggested. Assignments and projects are additional means by which to get the students hands dirty.

3.2

Unix and Networking

As a large project, an instant-messaging tool in C can be developed. This will require an understanding of networking in the unix environment, which is amply supplied by the freely available (and recently updated) Beejs Guide to Network Programming.

4
4.1

C++
Concurrency

We move to write concurrent programs with the C++ programming language. Peter A. Buhrs Concurrency in C++ will be used; corresponding assignments are available from here.

5
5.1

Functional Programming
Scala
A Scala Tutorial For Java Programmers Scala Actors: A Short Tutorial (Scala and concurrency) Programming in Scala (written by Scalas co-creator)

5.2

Haskell

Learn You a Haskell for Great Good! Write Yourself a Scheme in 48 Hours (we build a Scheme interpreter in Haskell)

Common questions

Powered by AI

Learning Java serves as a bridge between high-level languages like Python and lower-level C-derived languages, familiarizing students with C-style syntax and enhancing understanding of data structures. It helps prepare students for developing more complex applications, including Android development, by providing substantial experience in object-oriented programming, reinforcing both concepts and practices necessary for tackling lower-level languages .

'Learn You a Haskell for Great Good!' offers instructional merit by introducing functional programming concepts in an engaging and accessible manner. It simplifies complex ideas, making them approachable for beginners while covering fundamental Haskell principles. This resource fosters a deeper understanding of functional programming paradigms, encouraging students to think differently about coding through a purely functional lens .

Practicing short projects across different programming languages supports the development of coding skills by providing learners with diverse contexts to apply programming concepts, reinforcing language-specific syntax, and problem-solving techniques. This kind of practice encourages adaptability and enhances coding proficiency, fostering an understanding of each language's strengths and use cases .

'The C Puzzle Book' adopts a hands-on approach that requires students to solve puzzles, enhancing their problem-solving skills in C and engaging them through an interactive learning method. In contrast, 'The C Programming Language' provides a comprehensive understanding of C’s syntax and semantics, forming a solid theoretical basis. Using these two resources together offers a balanced approach, combining practical application with theoretical understanding .

Developing an instant-messaging tool in C is significant for understanding Unix networking because it requires practical application of network programming principles within a Unix environment. This project demands knowledge of networking protocols and challenges students to integrate their programming skills with system-level network operations, fostering a comprehensive grasp of both Unix systems and C programming .

Upon completing 'Learn Python The Hard Way,' a student will acquire skills in understanding data types such as strings and integers, using functions and variables, employing Boolean logic, implementing loops, and utilizing elementary data structures like lists and dictionaries. Additionally, the student will grasp object-oriented programming concepts, including inheritance .

Engaging with game development projects using PyGame is important because it allows students to apply their basic programming knowledge in a more creative and complex context. Game development incorporates elements such as graphics and interactive user interfaces, motivating students to explore advanced programming concepts and enhancing their problem-solving and project management skills through practical application .

Learning concurrency in C++ using 'Concurrency in C++' is critical because it equips programming students with the skills to write efficient and parallelized programs, a necessity for modern computing tasks. Mastery of concurrency enhances a student's ability to optimize resource usage, improve application performance, and handle complex tasks simultaneously, aligning with industry needs where concurrent processing becomes essential .

'Scala Tutorial For Java Programmers' is designed to help those familiar with Java transition into Scala by focusing on similarities and differences between the two languages, easing the learning curve. Meanwhile, 'Programming in Scala,' written by Scala’s co-creator, provides a comprehensive exploration of the language, covering both fundamental and advanced features, including Scala's approaches to functional programming and concurrency .

'Python Programming: An Introduction to Computer Science' offers a more technical and detailed introduction to computer science, serving as an alternative or a complement to 'Learn Python The Hard Way.' While 'Learn Python The Hard Way' provides hands-on exercises focused on practical coding skills in Python, John M. Zelle’s book delves deeper into computer science principles, offering theoretical underpinnings that enrich the practical approach of the former .

Suggestions for Practical Computer Science
November 12, 2012
1
Python
1.1
Learn Python The Hard Way
For a concise introductio
1.3
Practice
For the student to become comfortable with expressing instructions in code,
a collection of short projects is su
3
C
3.1
The Language
The knowledge which the student has hitherto accumulated provides her
with a mere glimpse into computer
5.2
Haskell
• Learn You a Haskell for Great Good!
• Write Yourself a Scheme in 48 Hours (we build a Scheme interpreter
in Has

You might also like