Loading...
 
Computer Science is the scientific and practical approach to computation and its applications.

Computer Science

Computer Science is the scientific and practical approach to computation and its applications.1

Related Topics

Resources

  • Informal History Of Programming Ideas
  • Obtaining a Thorough CS Background Online - I’d like to show you a way to obtain a computer science background that doesn’t involve enrolling in a university program. Maybe you’ve completed an introductory Java course, and now you’d like to pursue a software development position. Or maybe you already have some formal CS training, and you’d like to fill in a couple of knowledge gaps. By utilizing online learning resources, you can obtain that background without incurring the costs of the traditional university approach.
The Art of Computer Programming, Volumes 1-4a Boxed Set The Art of Computer Programming, Volumes 1-4a Boxed Set - These four books comprise what easily could be the most important set of information on any serious programmer's bookshelf.
Introduction to Computation and Programming Using Python Introduction to Computation and Programming Using Python - This book introduces students with little or no prior programming experience to the art of computational problem solving using Python and various Python libraries, including PyLab. It provides students with skills that will enable them to make productive use of computational techniques, including some of the tools and techniques of data science for using computation to model and interpret data. The book is based on an MIT course (which became the most popular course offered through MIT's OpenCourseWare) and was developed for use not only in a conventional classroom but in in a massive open online course (or MOOC) offered by the pioneering MIT--Harvard collaboration edX. Students are introduced to Python and the basics of programming in the context of such computational concepts and techniques as exhaustive enumeration, bisection search, and efficient approximation algorithms. The book does not require knowledge of mathematics beyond high school algebra, but does assume that readers are comfortable with rigorous thinking and not intimidated by mathematical concepts.Although it covers such traditional topics as computational complexity and simple algorithms, the book focuses on a wide range of topics not found in most introductory texts, including information visualization, simulations to model randomness, computational techniques to understand data, and statistical techniques that inform (and misinform) as well as two related but relatively advanced topics: optimization problems and dynamic programming. Introduction to Computation and Programming Using Python can serve as a stepping-stone to more advanced computer science courses, or as a basic grounding in computational problem solving for students in other disciplines.
Cracking the Coding Interview: 189 Programming Questions and Solutions Cracking the Coding Interview: 189 Programming Questions and Solutions- I am not a recruiter. I am a software engineer. And as such, I know what it's like to be asked to whip up brilliant algorithms on the spot and then write flawless code on a whiteboard. I've been through this as a candidate and as an interviewer.

Cracking the Coding Interview, 6th Edition is here to help you through this process, teaching you what you need to know and enabling you to perform at your very best. I've coached and interviewed hundreds of software engineers. The result is this book.

Learn how to uncover the hints and hidden details in a question, discover how to break down a problem into manageable chunks, develop techniques to unstick yourself when stuck, learn (or re-learn) core computer science concepts, and practice on 189 interview questions and solutions.
The Mythical Man-Month The Mythical Man-Month - Few books on software project management have been as influential and timeless as The Mythical Man-Month. With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects. These essays draw from his experience as project manager for the IBM System/360 computer family and then for OS/360, its massive software system. Now, 20 years after the initial publication of his book, Brooks has revisited his original ideas and added new thoughts and advice, both for readers already familiar with his work and for readers discovering it for the first time.

Videos

"Uncle" Bob Martin - "The Future of Programming"
Bret Victor The Future of Programming
ITT 2016 - Kevlin Henney - Seven Ineffective Coding Habits of Many Programmers

How to Read Code

  • Tips For Reading Code - One way to improve programming skills is to ReadGreatPrograms. Techniques such as SelfDocumentingCode and LiterateProgramming have been developed toward the goal of writing programs that can be easily read. However, most of us have to read lots of code that does not meet the above standards. What are the best ways to make sense out of those huge, unstructured, maintained-by-dozens-of-people, internally-inconsistent, undocumented code bases that we must understand and absorb?
  • One secret to becoming a great software engineer: read code - Become a better programmer by building a routine and habit for reading code

Don't repeat yourself (DRY)

In software engineering, don't repeat yourself (or do not repeat yourself; aka DRY) is a principle of software development aimed at reducing repetition of software patterns, replacing it with abstractions or using data normalization to avoid redundancy.2

SOLID

SOLID is a mnemonic acronym for five design principles intended to make software designs more understandable, flexible and maintainable.3

The Twelve Factor App

The Twelve Factor App In the modern era, software is commonly delivered as a service: called web apps, or software-as-a-service. The twelve-factor app is a methodology for building software-as-a-service apps such that:

  • Use declarative formats for setup automation, to minimize time and cost for new developers joining the project;
  • Have a clean contract with the underlying operating system, offering maximum portability between execution environments;
  • Are suitable for deployment on modern cloud platforms, obviating the need for servers and systems administration;
  • Minimize divergence between development and production, enabling continuous deployment for maximum agility;
  • And can scale up without significant changes to tooling, architecture, or development practices.

The twelve-factor methodology can be applied to apps written in any programming language, and which use any combination of backing services (database, queue, memory cache, etc).

Peer Code Reviews

Contrary to what many believe, the benefits of code review closely align to the tenets outlined in the Agile Manifesto. Statistics prove that peer code review is one of the most effective ways to improve software quality by reducing defects upstream. By aligning a peer code review approach with your specific goals and Agile sprints, code review becomes incredibly Agile and delivers many soft benefits that evolve from renewed focus on interaction and collaboration. Case study synopses provide quantitative evidence and metrics that support the case for Agile code review.4

Agile Software Development

Agile software development is a group of software development methods in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development, early delivery, continuous improvement, and encourages rapid and flexible response to change5

Manifesto for Agile Software Development6

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan


Principles behind the Agile Manifesto

Extreme Programming (XP)

Extreme Programming (XP) is an agile software development framework that aims to produce higher quality software, and higher quality of life for the development team.7

Lean Software Development

Lean Software Development is a translation of lean manufacturing principles and practices to the software development domain.8

Waterfall Model

Waterfall Model is a sequential design process, used in software development processes, in which progress is seen as flowing steadily downwards (like a waterfall) through the phases of conception, initiation, analysis, design, construction, testing, production/implementation and maintenance.9

1 Computer science. (2014, August 13). In Wikipedia, The Free Encyclopedia. Retrieved 03:14, August 23, 2014, from http://en.wikipedia.org/w/index.php?title=Computer_science&oldid=621078512
2 Wikipedia contributors. (2019, February 15). Don't repeat yourself. In Wikipedia, The Free Encyclopedia. Retrieved 18:05, February 17, 2019, from https://en.wikipedia.org/w/index.php?title=Don%27t_repeat_yourself&oldid=883429654
3 Wikipedia contributors. (2019, February 8). SOLID. In Wikipedia, The Free Encyclopedia. Retrieved 16:57, February 17, 2019, from https://en.wikipedia.org/w/index.php?title=SOLID&oldid=882362051
5 Agile software development. (2015, June 29). In Wikipedia, The Free Encyclopedia. Retrieved 05:26, June 30, 2015, from https://en.wikipedia.org/w/index.php?title=Agile_software_development&oldid=669176431
8 Wikipedia contributors. (2019, January 14). Lean software development. In Wikipedia, The Free Encyclopedia. Retrieved 17:46, February 17, 2019, from https://en.wikipedia.org/w/index.php?title=Lean_software_development&oldid=878395515
9 Waterfall model. (2015, May 5). In Wikipedia, The Free Encyclopedia. Retrieved 03:57, June 27, 2015, from https://en.wikipedia.org/w/index.php?title=Waterfall_model&oldid=660906933
Last edited by MichaelAlber .
Page last modified on Saturday May 9, 2020 16:00:58 UTC.

Books

Linux Command Line and Shell Scripting Bible Linux Command Line and Shell Scripting Bible - Linux Command Line and Shell Scripting Bible is your essential Linux guide. With detailed instruction and abundant examples, this book teaches you how to bypass the graphical interface and communicate directly with your computer, saving time and expanding capability.


Linux Bible Linux Bible - Linux continues to be an excellent, low-cost alternative to expensive operating systems. Whether you're new to Linux or need a reliable update and reference, this is an excellent resource. Veteran bestselling author Christopher Negus provides a complete tutorial packed with major updates, revisions, and hands-on exercises so that you can confidently start using Linux today.


Learning Python Learning Python - Portable, powerful, and a breeze to use, Python is the popular open source object-oriented programming language used for both standalone programs and scripting applications.


Modern PHP: New Features and Good Practices Modern PHP: New Features and Good Practices - PHP is experiencing a renaissance, though it may be difficult to tell with all of the outdated PHP tutorials online. With this practical guide, you'll learn how PHP has become a full-featured, mature language with object-orientation, namespaces, and a growing collection of reusable component libraries.