Ciência da Computação – por que ensinar?
“Programar não é algo que você conhece. É algo que você pode descobrir. Chris Pine, especialista em programação, autor de livros e tutoriais. “De certa forma, programar é como desenhar. No início você só tem uma tela em branco e materiais. Você precisa usar uma combinação de ciência, arte e artesanato para descobrir o que fazer com tudo isso.” Andrew Hunt, autor do livro best-seller The Pragmatic Programmer e coautor do Manifesto Ágil. Não é difícil entender para onde estamos indo. Para se tornar um programador realmente bom, ou simplesmente subir pelo menos um degrau acima de um codificador comum, você precisa ter o conhecimento mais amplo e ao mesmo tempo bastante profundo em diversas áreas, além das próprias linguagens de programação. E o domínio das disciplinas incluídas no conceito de CS é um dos primeiros lugares aqui.Disciplinas de Ciência da Computação
Vejamos quais disciplinas estão incluídas no campo da ciência da computação. Às breves descrições das disciplinas com os motivos para estudá-las, adicionaremos recomendações do melhor livro e da melhor série de videoaulas gratuitas sobre o assunto, talvez do melhor guia de ciência da computação em inglês, escrito por Oz Nova e Myles Byrne, professores da Escola de Ciência da Computação Bradfield, em São Francisco.-
Programação
A programação é a base e a disciplina básica da ciência da computação; a maioria dos alunos começa a estudar o curso de ciência da computação com ela. Os melhores cursos de programação CS serão úteis não apenas para iniciantes, mas também para programadores experientes que podem ter perdido certos conceitos e modelos de programação ao aprendê-los pela primeira vez.
Лучшая книга: “Структура и интерпретация компьютерных программ” (Structure and Interpretation of Computer Programs). Authorы: Джеральд Сассман (Gerald Sussman) и Хэл Абельсон (Hal Abelson).
А на JavaRush, кстати говоря, всем желающим доступен для изучения легендарный гарвардский курс “CS50. Основы программирования”, fully переведенный на русский.
Лучшая видеолекция: Brian Harvey’s Berkeley CS 61A
-
Алгоритмы и структуры данных
Знание наиболее распространенных алгоритмов и структур данных помогает решать разного рода задачи, а это очень важно в любой из областей компьютерных наук, включая, конечно, и разработку программного обеспечения.
Лучшая книга: The Algorithm Design Manual. Author: Стивен Скьена (Steven Skiena).
Лучшая видеолекция: лекции Стивена Скьены
-
Компьютерная архитектура
Знание компьютерной архитектуры, то есть понимание того, How на самом деле работает компьютер, является еще одной важной частичкой пазла, без которой попытки построения программных конструкций и моделей часто оказываются неудачными.
Лучшая книга: “Архитектура компьютера и проектирование компьютерных систем” (Computer Organization and Design). Authorы: Дэвид Паттерсон (David Patterson) и Джон Хеннеси (John Hennessy).
Лучшая видеолекция: Berkeley CS 61C
-
Операционные системы
Практически весь code, написанный программистом, будет выполняться операционной системой, поэтому знание принципов работы ОС также является важным элементом.
Лучшая книга: “Введение в операционные системы” (Operating Systems: Three Easy Pieces). Authorы: Андреа Арпачи-Дюссо (Andrea Arpaci-Dusseau) и Ремзи Арпачи-Дюссо (Remzi Arpaci-Dusseau).
Лучшая видеолекция: Berkeley CS 162
-
Компьютерные сети
Мало что в современном ИТ может обойтись без использования Интернета, поэтому ИТ-специалистам важно понимать, How Всемирная сеть работает, чтобы использовать ее потенциал по полной.
Лучшая книга: Computer Networking: A Top-Down Approach. Authorы: Джеймс Куросе (James Kurose), Кит Росс ( Keith Ross).
Лучшая видеолекция: Stanford CS 144
-
Математика для computer science
Поскольку компьютерные науки, по сути, являются ответвлением прикладной математики, знание этого предмета тоже будет очень полезным практически в любой профессии, связанной с программированием. А также даст вам конкурентное преимущество перед теми, кто этой дисциплиной не владеет.
Лучшая книга: Mathematics for Computer Science. Authorы: Альберт Р. Мейер (Albert R. Meyer), Эрик Леман (Eric Lehman) и Фрэнк Томсон Лейтон (Frank Thomson Leighton).
Лучшая видеолекция: Tom Leighton’s MIT 6.042J
-
Базы данных
Bancos de dados são um campo relativamente novo na ciência da computação e ainda não existem muitos especialistas no assunto. Os dados são outro elemento-chave da CS porque sustentam os programas mais importantes, mas poucas pessoas entendem como os sistemas de banco de dados realmente funcionam.
Melhor livro: Leituras em Sistemas de Banco de Dados. Autores: Joseph M. Hellerstein e Michael Stonebraker.
Melhor vídeo-aula: Berkeley CS 186 de Joe Hellerstein
-
Linguagens e compiladores
Compreender como as linguagens de programação e os compiladores funcionam tecnicamente permite que você melhore seu código e suas habilidades de programação. Também torna mais fácil aprender novos idiomas, o que também é extremamente importante para qualquer desenvolvedor a longo prazo.
Melhor livro: Compiladores: Princípios, Técnicas e Ferramentas. Autores: Alfred Aho, Monica S. Lam, Ravi Sethi, Jeffrey Ullman.
Melhor vídeo-aula: curso de Alex Aiken sobre Lagunita
-
Sistemas distribuídos
Hoje em dia, a maioria dos sistemas é distribuída. Computadores e programas estão se tornando mais complexos, e o conhecimento de sistemas distribuídos será útil para garantir que seu software funcione corretamente e sem problemas.
Melhor Livro: Sistemas Distribuídos, 3ª Edição. Autores: Maarten van Steen e Andrew S. Tanenbaum.
Melhor Vídeo Palestra: CS 436: Sistemas de Computador Distribuídos
Dicas para estudar ciência da computação
E por fim, alguns conselhos para quem está planejando começar a estudar disciplinas de Ciência da Computação.-
Desenvolver habilidades práticas em disciplinas de CS
Uma das vantagens do CS, assim como de outros cursos de informática, é que as competências teóricas que você acabou de adquirir podem ser imediatamente aplicadas na prática. Não se esqueça disso e alterne a teoria com a prática para obter os melhores resultados.
-
Não procrastine
A informática é um assunto bastante complexo, cujo estudo é fácil para poucas pessoas, principalmente no início. É por isso que, ao começar a estudar disciplinas de ciência da computação, você precisa evitar a procrastinação - não adie o domínio da teoria, da resolução de problemas e da prática para mais tarde, pois isso não só tornará o aprendizado muito longo, mas provavelmente não será tão eficaz.
-
Não se limite a um curso
Não espere obter todo o conhecimento necessário em um assunto em um curso, por melhor que seja. É sempre melhor consultar pelo menos várias fontes de informação para obter uma compreensão mais ampla do assunto.
-
Encontre pessoas que pensam como você
Parece um pouco brega, mas aprender de forma eficaz, assim como fazer muitas outras coisas na vida, é melhor quando se faz parte de um grupo de pessoas que pensam da mesma forma. Encontrar um grupo para estudar ciência da computação pode ser benéfico por vários motivos. Isso o ajudará a aprender de forma mais eficaz, a resolver tarefas e problemas em conjunto, a comparar seu progresso de aprendizagem e habilidades na aplicação de novos conhecimentos com outros.
-
Aprenda a escrever palavras, não apenas códigos
Outro conselho comum de muitos especialistas para os programadores que estudam CS para aprimorar suas habilidades e melhorar seu nível profissional: aprenda a escrever (não a codificar), ou seja, colocar palavras em frases e redigir textos a partir de frases. Essa habilidade é muito importante para qualquer desenvolvedor, e sua ausência dificultará o progresso não só no estudo da ciência da computação, mas também em outros aspectos da programação como profissão.
GO TO FULL VERSION