background preloader

How to Think Like a Computer Scientist

How to Think Like a Computer Scientist
Learning with Python by Allen Downey, Jeff Elkner and Chris Meyers. This book is now available for sale at How to Think... is an introduction to programming using Python, one of the best languages for beginners. How to Think... is a Free Book available under the GNU Free Documentation License. Please send suggestions, corrections and comments about the book to feedback{at}thinkpython{dot}com. Download The book is available in a variety of electronic formats: Precompiled copies of the book are available in PDF and Postscript . Translations Here are some translations of the book into other (natural) languages: Spanish translation by Gregorio Inda. Other Free Books by Allen Downey are available from Green Tea Press. If you are using this book and would like to make a contribution to support my work, please consider making a donation toward my web hosting bill by clicking on the icon below.

Think Python: How to Think Like a Computer Scientist How to Think Like a Computer Scientist by Allen B. Downey This is the first edition of Think Python, which uses Python 2. If you are using Python 3, you might want to use the second edition, which is here. Buy this book at Download Think Python in PDF. Read Think Python in HTML. Example programs and solutions to some problems are here (links to specific examples are in the book). Description Think Python is an introduction to Python programming for beginners. Some examples and exercises are based on Swampy, a Python package written by the author to demonstrate aspects of software design, and to give readers a chance to experiment with simple graphics and animation. Think Python is a Free Book. If you have comments, corrections or suggestions, please send me email at feedback{at}thinkpython{dot}com. Other Free Books by Allen Downey are available from Green Tea Press. Download Precompiled copies of the book are available in PDF. Earlier Versions Translations and adaptations

Homebrew Computer Club Gordon French, co-founder of the Homebrew Computer Club, hosted the first meeting of the club in his garage in March 1975. History[edit] Invitation to first Homebrew Computer Club meeting (sent to Steve Dompier). The first meeting was held in March 1975 in French's garage in Menlo Park, San Mateo County, California, on the occasion of the arrival in the area of the first MITS Altair microcomputer, a unit sent for review by People's Computer Company. After the more-or-less "formal" meetings the participants often reconvened at The Oasis [1], a bar and grill on El Camino Real in nearby Menlo Park, recalled years later by a member as "Homebrew's other staging area".[6] Many of the original members of the Homebrew Computer Club continue to meet (as of 2009[update]), having formed the 6800 Club, named after the Motorola (now Freescale) 6800 microprocessor. Members[edit] Though the Homebrew members were hobbyists, most of them had an electronic engineering or computer programming background.

The Little Book of Semaphores Allen B. Downey Download the book in PDF now! The video Watch an introduction to semaphores (and Free Books) I presented at Northeastern University: The book The Little Book of Semaphores is a free (in both senses of the word) textbook that introduces the principles of synchronization for concurrent programming. In most computer science curricula, synchronization is a module in an Operating Systems class. The approach of this book is to identify patterns that are useful for a variety of synchronization problems and then show how they can be assembled into solutions. The book covers the classical problems, including "Readers-writers," "Producer-consumer", and "Dining Philosophers." Second edition! The second edition of the book is now available in Postscript and PDF. In addition, the LaTeX source code is available in a tar file. Please send comments and corrections to semaphores{at}greenteapress{dot}com. Example code Other Free Books From Green Tea Press:

Hibernate (Java) Hibernate is a free software that is distributed under the GNU Lesser General Public License. Mapping Java classes to database tables is accomplished through the configuration of an XML file or by using Java Annotations. When using an XML file, Hibernate can generate skeleton source code for the persistence classes. This is unnecessary when annotations are used. Hibernate can use the XML file or the annotations to maintain the database schema. Hibernate supports the mapping of custom value types. Overriding the default SQL type that Hibernate chooses when mapping a column to a property.Mapping Java Enum to columns as if they were regular properties.Mapping a single property to multiple columns. Hibernate provides transparent persistence for Plain Old Java Objects (POJOs). Collections of data objects are typically stored in Java collection objects such as Set and List. Related objects can be configured to cascade operations from one to the other.

Learning Perl the Hard Way by Allen B. Downey. Download this book in PDF. Read other books from Green Tea Press. Do we really need another Perl book? I want a book for people who already know how to program in another language, but don't know Perl. This book is a work in progress. Learning Perl the Hard Way is a free book available under the GNU Free Documentation License. Printable versions of the book are available in PDF and gzipped Postscript. Multitier architecture In software engineering, multi-tier architecture (often referred to as n-tier architecture) is a client–server architecture in which presentation, application processing, and data management functions are physically separated. The most widespread use of multi-tier architecture is the three-tier architecture. N-tier application architecture provides a model by which developers can create flexible and reusable applications. While the concepts of layer and tier are often used interchangeably, one fairly common point of view is that there is indeed a difference. Three-tier architecture[edit] Visual overview of a Three-tiered application The three-tier model is a software architecture pattern. Apart from the usual advantages of modular software with well-defined interfaces, the three-tier architecture is intended to allow any of the three tiers to be upgraded or replaced independently in response to changes in requirements or technology. Three-tier architecture: Presentation tier Data tier

Systems analyst A systems analyst researches problems, plans solutions, recommends software and systems, at least at the functional level, and coordinates development to meet business or other requirements. Although they may be familiar with a variety of programming languages, operating systems, and computer hardware platforms, they do not normally involve themselves in the actual hardware or software development. Because they often write user requests into technical specifications, the systems analysts are the liaisons between vendors and information technology professionals.[1] They may be responsible for developing cost analysis, design considerations, staff impact amelioration, and implementation time-lines. A systems analyst may: The system development life cycle (SDLC) is the traditional system development method that organizations use for large-scale IT Projects. The SDLC is a structured framework that consists of sequential processes by which information system are developed. See also[edit]

Development Tool Suite for Enterprise Java | SpringSource The Spring Tool Suite is an Eclipse-based development environment that is customized for developing Spring applications. It provides a ready-to-use environment to implement, debug, run, and deploy your Spring applications, including integrations for Pivotal tc Server, Pivotal Cloud Foundry, Git, Maven, AspectJ, and comes on top of the latest Eclipse releases. Included with the Spring Tool Suite is the developer edition of Pivotal tc Server, the drop-in replacement for Apache Tomcat that's optimized for Spring. With its Spring Insight console, tc Server Developer Edition provides a graphical real-time view of application performance metrics that lets developers identify and diagnose problems from their desktops. The Spring Tool suite supports application targeting to local, virtual and cloud-based servers. It is freely available for development and internal business operations use with no time limits, fully open-source and licensed under the terms of the Eclipse Public License.

Programmer British countess and mathematician Ada Lovelace is considered the first computer programmer, as she was the first to write and publish an algorithm intended for implementation on Charles Babbage's analytical engine, in October 1842, intended for the calculation of Bernoulli numbers.[8] Lovelace was also the first person to comment on the potential for computers to be used for purposes other than computing calculations. Because Babbage's machine was never completed to a functioning standard in her time, she never saw her algorithm run. The first person to run a program on a functioning modern electronically based computer was computer scientist Konrad Zuse, in 1941. The ENIAC programming team, consisting of Kay McNulty, Betty Jennings, Betty Snyder, Marlyn Wescoff, Fran Bilas and Ruth Lichterman were the first regularly working programmers.[9][10] Nature of the work[edit] Programmers in the Yandex headquarters. Testing and debugging[edit] Application versus system programming[edit]

Software analyst In a software development team, a software analyst is the person who studies the software application domain and prepares the software requirements and specification (Software Requirements Specification) document. Software analyst is the seam between the software users and the software developers. It conveys the demands of the software users to the developers. A software analyst is expected to have the following skills: Working knowledge of software technologyComputer programming experience and expertiseGeneral business knowledgeProblem solving and problem reduction skillsInterpersonal relation skillsBe flexible and adaptableSystems analyst

Software engineer A software engineer programming for the Wikimedia Foundation Software engineers apply the principles of engineering to the design, development, maintenance, testing, and evaluation of the software and systems that make computers or anything containing software work. Typical formal definitions of software engineering are: "the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software".[1]"an engineering discipline that is concerned with all aspects of software production"[2]"the establishment and use of sound engineering principles in order to economically obtain software that is reliable and works efficiently on real machines"[3] The term has been used less formally: Overview[edit] Prior to the mid-1960s, software practitioners called themselves computer programmers or software developers, regardless of their actual jobs. These terms cause confusion, because some[who?] A state of the art[edit] In 2004, Keith Chapple of the U.

Software architect Software architect is a computer manager who makes high-level design choices and dictates technical standards, including software coding standards, tools, and platforms. History[edit] With the popularity of multi-tier application development, the choices of how an application can be built have also increased. Given that expansion, the risk that a software development project may inadvertently create a "new" end product that, in essence, already existed has grown markedly. A new 'software architect' role has become necessary during software development.[citation needed] The software architect concept began to take hold when object-oriented programming (OOP) was coming into more widespread use (in the late 1990s and early years of the 21st century). Responsibilities[edit] The main responsibilities of a software architect include: Limit choices available during development by Recognize potential reuse in the organization or in the application by Duties[edit] See also[edit] References[edit]

Software developer A software developer is a person concerned with facets of the software development process. Their work includes researching, designing, implementing, and testing software.[1] A software developer may take part in design, computer programming, or software project management. They may contribute to the overview of the project on the application level rather than component-level or individual programming tasks. Software developers are often still guided by lead programmers but the description also encompasses freelance software developers. Description[edit] In the US, a software developer is classified into one of 3 titles (all under the 15-0000 Computer and Mathematical Occupations Major Group):[2] 15-1131 Computer Programmers[3]15-1132 Software Developers, Applications[4]15-1133 Software Developers, Systems Software[5] Aspects of developer's job may include: In a large company, there may be employees whose sole responsibility may consist of only one of the phases above. References[edit]