Sie bestimmen, welche Suchergebnisse und Online-Dating-Partner wir sehen. Trotzdem sind Algorithmen für viele EU-Bürger noch immer ein Buch mit sieben Siegeln, wie eine Studie der Bertelsmann Stiftung nun zeigt.
\#HackerNews #computer #curriculum #modern #science #self-learningArticle content: "The great idea of constructive type theory is that there is no distinction between programs and proofs... Theorems are types (specifications), and proofs are programs" (Robert Harper) This is a collection of modern resources on various undergrad level computer science topics, for someone with an interest in theory. Use LibGen if you canʼt buy these books. You donʼt have to do everything here, just the topics of interest to you. If for any reason you want a condensed version, watch the Great Theoretical Ideas in Computer Science lecture series to see what interests you in the field. Almost all the material in each resource is self contained so will cover necessary background which if you donʼt have see the preliminaries.
How to Learn
On Isaac Newtonʼs iteration method to self-learn geometry: "He bought Descartesʼ Geometry and read it by himself .. when he was got over 2 or 3 pages he could understand no farther, than he began again and got 3 or 4 pages father till he came to another difficult place, than he began again and advanced farther and continued so doing till he made himself master of the whole without having the least light or instruction from anybody" (Kingʼs Cam.,Keynes MS 130.10,fol. 2/v/) Cal Newport has some anecdotes on how he was able to get the best grade in his Discrete Mathematics class, and the rest of the site is full of advice on studying, how to schedule yourself and deliberate practice. Further anecdotes exist on the importance of deep work and deliberate practice. There is a free course Learning How to Learn on coursera.org which suggest the same techniques plus Cornell style note taking and how to read a research paper.
Everything here is optional, you could try just starting with CS 3110.
Intro to Computation
The book How to Design Programs (HtDP) has proven success teaching an introduction to programming while remaining rigorous. One of itʼs authors is now running a public school curriculum project called Bootstrap and gave a talk why this style of teaching programming has the most success, and how itʼs curriculum transfers to other fields such as how the students writing games are actually writing differential equations, as the behavior of a game over time is the integral. If you really want to understand programming you should start with this book. If you liked HtDP, itʼs sequel is PAPL (original Racket version also exists, but Pyret and Racket are essentially the same languages just the author was tired of parenthesis complaints from other professors). A very rigorous introduction exists as the classic MIT book Structural Interpretation of Computer Programs (SICP) but the more programming you do before reading SICP, the more you get out of it.
Some Additional Optional Intros
Common Lisp Intro
Itʼs possible to do (or at least model) every course in this list using Common Lisp, such as building your own domain-specific machine code while completing 15-213 Computer Systems, or hacking together purely functional data structures, or writing your own pattern matcher, or simulating a turing machine, ect. Of course you will do the courses using their recommended languages and tools, but in addition to this, building your own toy prototypes for the topics here in Lisp can help you learn this material as you discover it for yourself with active learning. Another shill for Common Lisp as a good language choice is it hasnʼt changed much in decades, so an old library you found that hasnʼt been updated in 15 years will still work. There is also the joy of programming Lisp as a system.
Little Schemer Series
The Little Schemer series books are a Q&A format/Socratic method for learning the basics of computation (read the Preface of each book). You can do the Little Schemer with pencil and paper in a weekend though the authors recommend at least 3 sittings. The first in the series is The Little Schemer which teaches you to think recursively. The second is the Seasoned Schemer covering higher-order functions, which will help understand calculus. The differential operator is a higher-order function: given a function on the real line it yields its first derivative as a function on the real line. \* (Book) The Little MLer - Matthias Felleisen, Daniel P. Friedman
\* Self contained but will make much more sense if youʼve already done the first book, The Little Schemer covering cons, lists and recursion. \* Teaches you to think recursively, and provides an introduction to the principles of types, computation, and program construction. \* Applies to any functional language, almost all the exercises can be done in OCaml or another language with a small amount of syntactic adjustment. Carnegie Mellon University
Students with direct entry to this CMU course already have a background in programming. Good information here on style, design and efficiency, with an introduction to complexity otherwise you would learn all of this in HtDP.
Elementary Math "So I went to Case, and the Dean of Case says to us, itʼs a all menʼs school, "Men, look at, look to the person on your left, and the person on your right. One of you isnʼt going to be here next year; one of you is going to fail." So I get to Case, and again Iʼm studying all the time, working really hard on my classes, and so for that I had to be kind of a machine. In high school, our math program wasnʼt much, and I had never heard of calculus until I got to college. But the calculus book that we had was (in college) was great, and in the back of the book there were supplementary problems that werenʼt assigned by the teacher. So this was a famous calculus text by a man named George Thomas (second edition), and I mention it especially because it was one of the first books published by Addison-Wesley, and I loved this calculus book so much that later I chose Addison-Wesley to be the publisher of my own book. Our teacher would assign, say, the even numbered problems, or something like that (from the book). I would also do the odd numbered problems. In the back of Thomasʼs book he had supplementary problems, the teacher didnʼt assign the supplementary problems; I worked the supplementary problems. I was scared I wouldnʼt learn calculus, so I worked hard on it, and it turned out that of course it took me longer to solve all these problems than the kids who were only working on what was assigned, at first. But after a year, I could do all of those problems in the same time as my classmates were doing the assigned problems, and after that I could just coast in mathematics, because Iʼd learned how to solve problems" (Don Knuth ) I bought George Thomasʼ Calculus and Analytical Geometry 3rd edition for around $12 off Thrift Books and can see why Knuth liked this book so much as Thomas carefully goes through each proof describing what is happening. The second or classic edition is the one Knuth used and was reprinted recently. Thereʼs a review of trigonometry in the 3rd edition as well.
Nonexistent Math Background
The Gelfand Correspondence Program in Mathematics existed in the 90s, where students were sent books and could mail back assignments to be graded and coached. These books are still around and are excellent taking a problem solving approach on every page. Algebra and Trigonometry are both recommended. While you go through any of these books try a survey of The Better Explained Math and Calculus series books, which explain basic math such as the natural logarithm. Gilbert Strang also has a lecture series Highlights of Calculus. Cambridge also offers advice for incoming undergrads on readable texts.
Weak/Forgotten Math Background
Start with Po-Shen Lohʼs new site Expii.com which presents topics in a brief intuitive manner, then feeds you problems in that domain and makes decisions based on your answers if you need more practice problems. The Advanced Topics have all kinds of great tutorials on CS Theory as well as Number Theory.
Calculus With Theory
Optional, Thomasʼ text will teach you the theory of calculus, though doing the exercises of Apostolʼs Calculus I is a great way to build mathematical maturity. This alternative Calculus w/Theory lecture series only uses a simple algebraic framework, eliminating limits/infinity. Linear algebraic ideas and the Discrete Calculus are both highly relevant to the material here. There is also a full course available.
The 2012 version by Dan Licata has the best lecture notes, optionally combine with most recent course notes. Robert Harper keeps a blog and a follow up post on the success of teaching this course. SML is used because itʼs syntax and module system is simple, much like Schemeʼs easy syntax was once preferred for introductory courses so the complexity of the language gets out of the way and you learn the fundamentals.
Intro to Programming using OCaml
This Cornell OCaml course is totally self contained with itʼs own textbook. You will want to archive the entire course locally using wget. The release code for the assignments wget them here and change URL to /a4/a4.zip, /a3/a3.zip, they range a0.zip - a5.zip \* (Full Course) CS 3110 Data Structures and Functional Programming
\* The free textbook is essentially the lectures, the notes have recommended chapters for additional books like Real World Ocaml * Introduction to Coq, you can extract OCaml from Coq, F* or from Why3 \* No prereqs in programming required, if you get lost on something directly look it up in this free book How to Think Like a (functional) Computer Scientist
\* See this talk Effective ML how to properly write interfaces, error handling \* You can even program hardware such as a FPGA in OCaml using this library \* Or websites using bucklescript Algebra
It is possible in a functional language like ML to do algebra with types, proving two types are isomorphic with the desired properties of reflexivity, symmetry, and transitivity. Itʼs also possible to abstract Lists and Trees into polynomials, as every polynomial looks like a sum of terms. As you will learn in 15-150 Principles of Functional Programming "most functional datastructures have constant time access near the outer layer of their structure, ie: the head of a list or the root of a tree. However, access at some random point inside the structure is typically linear since looking at some element of a list is linear in the length of the list, and looking at some element of a tree is linear in the depth of the tree. Datatype derivatives allow constant time access to the entire structure."
Linear Algebra \* (Full Course) CS053 - Coding the Matrix
\* Covers interesting applications like what was shown in Great Theoretical Ideas in Computer Science when you learned how a parity bit works. \* No formal prerequisites except assumes you know how to do basic proofs
\* (Book) Linear Algebra: An Introduction to Abstract Mathematics - Robert J. Valenza
\* This free book Linear Algebra - As an Introduction to Abstract Mathematics from UC Davis, is an excellent companion to Valenzaʼs text \* These YouTube presentations here help with understanding the topics on a geometric level. Watch the Essence of Linear Algebra to see what this means
\* Other Resource: Sheldon Axler has recorded lectures for his book Linear Algebra Done Right aka Down With Determinants!
\* The exercises in Axlerʼs book are either too easy, sometimes near impossible, but the presentation of material with vectors explained first before determinants is preferred
\* Yet Another Resource: NJ Wildberger has a Linear Algebraic Geometry series of lectures Abstract Algebra \* (Full Course) Math-371 Abstract Algebra
\* Has recorded lectures which are essential as you can quickly get lost in the texts at this level of abstraction \* Uses readings from three texts
\* There is also this Harvard course with excellent recorded lectures and uses readings from Algebra - M. Artin (blue book) as a great compliment to Math-371 lectures
\* The history of Abstract Algebra by Prof Lee Lady Discrete Mathematics
Resources to learn undergrad Discrete Mathematics.
Introduction to Pure Mathematics \* (Book) An Infinite Descent into Pure Mathematics
\* Collection of excellent lecture notes used in CMUʼs 15-151/21-127 Concepts of Mathematics class \* Curriculum based on findings in evidenced based teaching \* Authorʼs motivations for not including answers are explained here: "people learn more when they discover something for themselves than they do if someone tells them about it."
\* Alternatively try the book Concrete Mathematics for a complete description of proof by induction, summation notation, generating functions, ect., with answers included for self-study. Discrete Math with Standard ML
The merging of proof and program is what makes this a great book. If you canʼt get this book Discrete Mathematics, by L. Lovász, J. Pelikán, and K. Vesztergombi is normally used or just skip to 15-251 Great Theoretical Ideas in CS. If you can finish this book youʼve essentially done most of 15-150 Principles of Functional Programming (such as proving programs correct) and most of 15-215 Great Theoretical Ideas in Computer Science. \* (Book/Lectures) Discrete Mathematics and Functional Programming - Thomas VanDrunen
\* Lectures exist on the authorʼs homepage, this book is used for a one semester university course with additional elective chapters in Graph Theory, Complexity Theory, Automata, ect. \* List of Common Errors in Undergrad Math like undistributed cancellations, sign errors, confusion about notation ect. if you missed it from the prelims section of this guide
\* The Art of Computer Programming Vol 1: Fundamental Algorithms by Donald E. Knuth also offers an excellent but terse introduction to Discrete Math Great Theoretical Ideas in Computer Science
This is a crash course in multiple topics such as Probability, Linear Algebra, Modular Arithmetic, Polynomials, Cryptography and Complexity Theory. 15-251 assumes students have completed An Infinite Descent into Pure Mathematics though it is self contained. "This course teaches the mathematical underpinnings of computation and explores some of the central results and questions regarding the nature of computation."
Computer Systems "[Computer science] is not really about computers - and itʼs not about computers in the same sense that physics is not really about particle accelerators, and biology is not about microscopes and Petri dishes...and geometry isnʼt really about using surveying instruments. Now the reason that we think computer science is about computers is pretty much the same reason that the Egyptians thought geometry was about surveying instruments: when some field is just getting started and you donʼt really understand it very well, itʼs very easy to confuse the essence of what youʼre doing with the tools that you use." (Hal Abelson) This covers computer architecture from a programmerʼs perspective, such as how to write cache friendly code, and other optimizations for the x86-64 arch. You learn how to manually write loops in assembly and see how recursion works at a lower abstraction. You learn machine code instructions, how compilers work, return oriented programming (ROP) to bypass stack protections, the memory hierarchy, and networks. You could read K&Rʼs The C Programming Language for a brief intro, though this course will explain C as you go anyway and fully covers pointers at the assembly language level making it self contained.
Knuth constructed a futuristic architecture with 256 registers for his Art of Computer Programming series to make hacking around with experimental systems programming easier. If you ever find yourself implementing instructions for something (webAssembly devs) you should read through MMIX documentation, for gems like MOR/MXOR. \* (Book) MMIXware: a RISC computer for the third millennium - Donald E Knuth
\* An intro to MMIX here with some of itʼs interesting design (such as implementing proper integer arithmetic) and simulators \* Knuth uses literate programming to go through all design decisions, describing every line of code in detail as itʼs how he learned to write symbolic assemblers in the 1950s by reading other peopleʼs programs while on vacation \* Combine with some course notes on open research issues for operating systems or read about the architecture and critiques of Hurd
\* A series of papers in Computer Architecture curated by Princeton U (use sci-hub to access them) Compilers
Search libgen.io or sci-hub for additional papers or books on parsers/compilers.
Interesting post on the future of database systems by Andy Pavlo.
Practical Data Science \* (Full Course) 15-388 Practical Data Science
\* Provides a practical introduction to the ʼfull stackʼ of data science analysis: data collection and processing, data visualization and presentation, statistical model building using machine learning, and big data techniques for scaling these methods. \* Jupyter notebook is a literate programming paradigm tool, you can freely write using LaTeX or markdown and run the code cells in any order to not interrupt the flow of documentation.
\* This course teaches the Python libraries, but you can do the assignments in Julia if you want, or experiment in OCaml with static typing. A classic introductory computer science book on thinking about the big picture of programs with abstraction: finding general patterns from specific problems and building programs based on these patterns. An applied example of this is the package manager GNU Guix and distro GuixSD, which is a GNU implementation of the NixOS functional software deployment model. Package builds, including entire system builds, are declared in one text file. The resulting software deployment is functional: build inputs go in such as compilers, customizations, environments ect, and a reproducible, immutable build comes out with a hashed identifier meaning you can do roll backs to previous successful builds. A recent GUixSD feature gexp (g-expressions) is a good example what can be achieved through syntactic extensions of the Scheme language.
You are more likely to benefit from this book after having some programming experience, but no matter what level of programmer you are youʼll still benefit from SICP.
Natural Language Processing
Read these reasons for studying programming languages.
Isolating Software Failure, Proving Safety and Testing
How to verify software, and strategies of programming that minimize catastrophe during failure. The Little Prover is a good introduction in determining facts about computer programs. Prof Rob Simmons can be hired as a tutor to teach you Coq, the curriculum follows the Software Foundations book series below. \* (Lecture Notes) 15-316 Software Foundations of Security and Privacy
\* Covers side channel attacks, provable privacy, web security, sandboxing, assignments are extending an http network server (in C), and spotting bugs. \* Read about tests, strategies to safe program design (in OCaml), and proving safety from the 2017 version: git clone https://github.com/jeanqasaur/cmu-15316-spring17.git
\* (Book) Verified Functional Algorithms
\* Some recorded lectures by Andrew Appel here \* Part 3 of the Deep Specifications interactive book series by Andrew Appel, learn by doing \* Assumes you have read these chapters of Software Foundations Part I: Preface, Basics, Induction, Lists, Poly, Tactics, Logic, IndProp, Maps, (ProofObjects), (IndPrinciples)
\* A good introduction to Dependent Types by Dan Licata is here or The Little Typer book. Physical Systems Software Security \* (Full Course) 15-424 Foundations of Cyber-Physical Systems
\* Course (with recorded lectures) if youʼre interested in programming drones/space shuttles/robots/cars and other things that cannot fail from avoidable errors. \* Self contained, will teach you differential eq but assumes you already have some calculus background. Algorithms
Unlike a traditional introduction to algorithms and data structures, this puts an emphasis on thinking about how algorithms can do multiple things at once instead of one at a time and ways to design to exploit these properties. It uses a language based analysis model to estimate complexity for abstractions such as garbage collection.
Advanced Algorithms (Purely Functional Data Structures)
The typical text for a senior undergrad or graduate course on algorithm analysis is The Design and Analysis of Algorithms by Kozen (1992). This is an excellent book to study with difficult problems well presented and clearly analyzed by Kozen. The Okasaki book (1999), Purely Functional Data Structures gives examples in Standard ML and Haskell.
Expands on the lectures in 15-251.
Graduate Complexity Theory
You may want to try solving some of the problems in this domain.
Useful Math for Theoretical CS
These scribed lecture notes give you a diverse background in math useful for theoretical CS, from the excellent book The Nature of Computation such as these slides from A Theoristʼs ToolKit which describe how to find research, how to write math in LaTeX, how to give a talk, resources on math.overflow ect.
Introduction to Quantum Computing
This is a graduate introduction to quantum computation/information theory, from the perspective of theoretical computer science. \* (Full Course) 15-859BB: Quantum Computation
\* Recorded lectures on YouTube. \* The prereqs are an undergrad background in complexity theory (15-251 or 15-455), linear algebra, and discrete probability. \* "90% of the understanding of the quantum circuit model is achieved by reviewing three purely ʼclassicalʼ topics: classical Boolean circuits; reversible classical circuits; and randomized computation"
\* A series of curated papers on Quantum Computing Jobs
This service matches your skills to people who want to pay you. Jane Street Capital is a finance tech company that hires functional programmers worldwide, you may want to apply there. There are numerous opportunities to apprentice as a security researcher or get paid to prove business logic programs like ʼsmart contractsʼ. Check your local university employment listings as well, often students do not take these jobs as they are off chasing that startup stock options payday or doing industry internships, plenty of opportunities to work with post-doc researchers writing algorithms or analyzing data. For web programming there exists free programming notes for software like NodeJS, which you can write software for in OCaml by compiling it into JS with bucklescript or compile to web assembly.
Graduate Research in Type Theory
Read these slides from A Theoristʼs ToolKit on how to find research, how to write math in LaTeX, how to give a talk, where to ask on stackexchange ect.
Basic Proof Theory
Intro to Category Theory
Type Theory Foundations
Higher Dimensional Type Theory
Start with this talk A Functional Programmerʼs Guide to Homotopy Type Theory with intro to Cubical Type Theory
Graduate Research in Machine Learning/AI
Read these slides from A Theoristʼs ToolKit on how to find research, how to write math in LaTeX, how to give a talk, where to ask on stackexchange ect.
Graduate Introduction to General AI
These notes here cover more topics, such as Computer Vision/NLP/AGI and follows AI: A Modern Approach book by Norvig. The 15-780 course is specific to some topics in AI providing them 2-3 lectures each. \* (Full Course) 15-780 Graduate Introduction to AI
\* Recorded lectures here and here \* No formal pre-requisites except grad level standing so familiar with some undergrad calculus and linear algebra/probability
\* MITʼs Artificial General Intelligence free class explores possible research paths for creating AGI \* Sussman had a great 2017 grad course reviewing older paper with unsolved problems or deep ideas, like his own Art of the Propagator paper and implementation \* AI readings to explain intelligence from a computational point of view Math Background for ML
A series of recorded lectures and recommended texts for a crash course in the Math background for ML introductory courses
Statistics Theory \* (Full Course) 36-705 Intermediate Statistics
\* The author of All of Statistics Larry Wasserman covers the fundamentals of theoretical statistics in these (badly) recorded lectures \* The probability prereqs can be found here or from any undergrad text on probability \* Additional lecture notes on the intersection of stats theory and ML Graduate Introduction to ML
Advanced Introduction to ML \* (Full Course) 10-715 Advanced Introduction to ML
\* Most recent version here uses mostly the same recorded lectures. \* Fast paced curriculum intended to prepare PhD students in the ML grad program to write research papers \* Some slides on the practical techniques needed for working with large datasets
\* Linear Algebra review crash course w/recorded lectures here relevant to optimization/ML \* Real Analysis review here \* Probability lecture notes
\* (Full Course) 10-701 Introduction to ML
\* Intended for PhD students outside the ML program, more theory and rigor than 10-601 \* Assumes you have this Math Background for ML math background \* Some recorded recitations are here
\* Some slides on the practical techniques needed for working with large datasets Convex Optimization
If youʼre interested in parallel GPU programming for training see these lectures and notes. \* (Full Course) 11-785 Introduction to Deep Learning
\* Recorded lectures here to learn to build and tune deep learning models
\* If the playlist is deleted, which is frequently, (use youtube-dl to archive) search YouTube for "CMU 11-785"
\* There are also applied courses and practical challenges/competitions on kaggle.com
\* Some slides on techniques for making deep learning robust to adversarial manipulation Algorithms for Big Data
Graduate Research Elective: Cryptography
Read these slides from A Theoristʼs ToolKit on how to find research, how to write math in LaTeX, how to give a talk, where to ask on stackexchange ect.
Graduate Cryptography Intro
This course covers post-quantum crypto, elliptic curve crypto, and is taught by premiere researcher Tanja Lange (TU/e)
Applied Cryptography \* Draft book A Graduate Course in Applied Cryptography - Dan Boneh and Victor Shoup \* Lecture notes from 18-733 Applied Cryptography \* Read all Daniel J. Bernsteinʼs (and Peter Gutmannʼs) posts on the IETF Crypto Forum Research Group [Cfrg]archive, itʼs a master class in modern cryptanalysis and he rips apart bad standards/protocol designs. \* Read The Art of Computer Programming - Seminumerical Algorithms by Knuth (Vol 2) chapter on Random Numbers. These tests are still used in MIT grad courses. Try them on every library you can find that supposedly generates pseudorandom numbers \* Read about the proof of the Wireguard protocol, a VPN that uses AEAD_CHACHA20_POLY1305 Future Research \* Follow whatever the PhD students of djb and Tanja Lange are working on \* Watch the lectures from the 2017 Post-Quantum Crypto Summer School \* Read the journal of Crypto Engineering (use SciHub proxy) \* Read a book on Random Graphs there is a connection between Graph Theory and Cryptography \* Try the Cryptopals challenges \* Read some cryptocurrency papers, such as Stellarʼs Consensus algorithm (soon to be used by mobilecoin.com), Fail-Safe Network or the protocol specification for Zcash. References
Image Computer science is so sought-after on certain college campuses that students like Aafia Ahmad, a sophomore and computer science major at the University of Texas at Austin, say they have to compete just to get into popular courses.CreditCreditJoanna Kulesza for The New York Times
Lured by the prospect of high-salary, high-status jobs, college students are rushing in record numbers to study computer science.
Now, if only they could get a seat in class.
On campuses across the country, from major state universities to small private colleges, the surge in student demand for computer science courses is far outstripping the supply of professors, as the tech industry snaps up talent. At some schools, the shortage is creating an undergraduate divide of computing haves and have-nots — potentially narrowing a path for some minority and female students to an industry that has struggled with diversity.
The number of undergraduates majoring in the subject more than doubled from 2013 to 2017, to over 106,000, while tenure-track faculty ranks rose about 17 percent, according to the Computing Research Association, a nonprofit that gathers data from about 200 universities.
Economics and the promise of upward mobility are driving the student stampede. While previous generations of entrepreneurial undergraduates might have aspired to become lawyers or doctors, many students now are leery of investing the time, and incurring six-figure debts, to join those professions.
By contrast, learning computing skills can be a fast path to employment, as fields as varied as agriculture, banking and genomics incorporate more sophisticated computing. While the quality of programs across the country varies widely, some computer science majors make six-figure salaries straight out of school.
At the University of Texas at Austin, which has a top computer science program, more than 3,300 incoming first-year students last fall sought computer science as their first choice of major, more than double the number who did so in 2014.
Image The Bill and Melinda Gates Computer Science Complex and Dell Hall at the University of Texas at Austin, home to one of the nation’s leading computer science programs. A surge in student demand for the courses is outstripping the supply of professors available to teach them.CreditJoanna Kulesza for The New York Times
“The demand is unbounded,” said Don Fussell, chairman of the university’s computer science department. The university is looking to hire several tenure-track faculty members in computing this year, he said, but competition for top candidates is fierce. “I know of major departments that interviewed 40 candidates, and I don’t think they hired anybody.”
Although the problem has been building for years, a recent boom is straining resources at new levels at institutions large and small. The situation has become so acute that Swarthmore College, which was already holding lotteries to select students for computing classes, is now capping the number of courses that computer science majors may take. The University of Maryland plans this fall to make computing a limited enrollment major, which will make it harder for non-majors to transfer in. At the University of California, San Diego, introductory lecture courses have ballooned to up to 400 students to accommodate both majors and non-majors.
As a result of such changes, students on some campuses said they felt shut out of computer science while others said they faced overcrowded classes with overworked professors.
Aafia Ahmad, a sophomore computer science major at U.T. Austin, had hoped to take an elective course in computer security this semester. But when she tried to sign up during early registration in November, the course was already full. She said that was the case for nearly every computer science elective she wanted. She is now 79th on a waiting list for the security course.
“It’s a cutthroat race to register for classes,” she said.
Some university leaders said they were concerned that certain measures taken to address surging student demand may disadvantage people who are already unrepresented in computer science — including women, African-Americans, Latinos and low-income, first-generation college students.
Some universities now require incoming students to get accepted into computer science majors before they arrive on campus — and make it nearly impossible for other undergraduates to transfer into the major. That approach can favor incoming students from schools with resources like advanced programming courses. It can also favor male students — because women on average are less likely to have taken a computer science course in high school.
“When you put any kind of barrier in place in terms of access to computer science majors, it tends to reduce the number of women and students of color in the program,” said Maria Klawe, president of Harvey Mudd College, a private college in Claremont, Calif., that has become a national model for diversity in computer science.
Don Fussell, the chairman of the computer science department at the University of Texas at Austin, said top programs nationwide were competing with tech companies to keep their professors and hire Ph.D.s.CreditJoanna Kulesza for The New York Times
Other experts warned that some students without computing experience may be rushing into the major because it seems to be trendy and pay well — not because it is the subject that most interests them.
“Maybe they are cutting off other options too early,” said Richard Wicentowski, the chairman of Swarthmore’s computer science department.
One solution, he suggested: Universities could treat computer science more like math — courses that lay the foundations for other majors like data science and physics. That way, he said, students could learn important computing skills and then apply them to other majors, like literature, while keeping their job prospects open.
On some campuses, students have protested measures like course lotteries and long waiting lists.
At Haverford College in Pennsylvania, students put up posters in the science building on April Fools’ Day, lamenting the dearth of computing teachers. One showed a featureless face with the caption: “This Is Where I’d Put My New Tenure-Track CS Professor … If I Had One.” Students later wrote a letter to college officials pushing for more professors.
Haverford has since opened a search for a new computer science professor.
Some schools are trying to create more hospitable conditions. Both Harvey Mudd and the University of Washington in Seattle offer introductory computing courses intended to attract students with or without computing experience.
Likewise, Tracy Camp, head of the computer science department at the Colorado School of Mines — a public university where the number of computer science majors has more than doubled in recent years — said she was determined not to put in deterrents like capping the major. Instead, she said, class sizes had sharply increased.
“I don’t want to tell a student already at Mines, ‘You can’t major in computer science,’” Professor Camp said.
The computer science complex opened in 2013 at U.T. Austin. The number of incoming students seeking to major in the subject more than doubled between 2014 and 2018.CreditJoanna Kulesza for The New York Times
Still, the pipeline of professors is limited — partly because of economics and partly because university hiring is geared toward long tenure appointments, not the latest trends.
High entry-level salaries are luring undergraduates to pick the private sector over graduate school, limiting the supply of future professors. The number of graduate students enrolled in computer science Ph.D. programs has only inched up in recent years, to nearly 12,700 in 2017 compared with about 11,000 in 2013, according to the Taulbee Survey, an annual report from the Computing Research Association.
In addition, tech giants and other companies have been poaching professors and hiring new Ph.D.s.
“I had a faculty member who came in with an offer from a bank, and they were told that, with their expertise, the starting salary would be $1 million to $4 million,” said Greg Morrisett, dean of computing and information science at Cornell University. “There’s no way a university, no matter how well off, could compete with that.”
To stem the tide of professors decamping for industry, universities are turning to dual appointments. Last year Amazon hired Siddhartha Srinivasa, a world-renowned robotics expert who is a computer science professor at the University of Washington. He now splits his time between the two.
Ed Lazowska, a computer science professor at the university, said such arrangements gave faculty members access to resources, like giant computing power and tremendous data sets, that could help further their research and benefit their students.
“What better place could there be than Amazon to put your robot to work?” Professor Lazowska said.
Professor Fussell at Texas also said joint appointments could be a partial remedy, adding that he had recently talked with major tech companies about helping universities retain faculty.
“They are well aware that they are eating their seed,” Professor Fussell said.
Dr. Klawe at Harvey Mudd is weighing a more academic solution to meeting student demand. She wants to train people with Ph.D.s in subjects like math, physics and biology to teach computer science, potentially increasing the supply of professors.
She is raising money for a pilot program, but she said any solution would take time.
“It’s going to get worse before it gets better,” Dr. Klawe said.
A version of this article appears in print on , on Page A1 of the New York edition with the headline: Hard Part of Computer Science Class? Getting In. Order Reprints | Today’s Paper | Subscribe
Researchers in Poland and South Korea have developed a computerised method that could be used to synthetically produce essential drugs, bypassing patent-protection.
In the global industry, some of the best kept secrets are those necessary to make life-saving medication and other pharmaceutical products.
“When we started this project, I was somewhat skeptical that the machine would find any viable synthetic alternatives – after all, these are blockbuster drugs worth gazillions of dollars, and I was sure that the respective companies had covered the patent space so densely that no loopholes remained,” said Professor of Chemistry at the Ulsan National Institute of Science and Technology (South Korea) and the Polish Academy of Sciences, Dr Bartosz Grzybowski.
“It turns out that the loopholes are there, and we can find new retrosynthetic pathways that circumvent the patents entirely.”
Dr Grzybowski is also the lead developer of the organic synthesis software Chematica.
These pharmaceutical patents protect the intellectual property of the company, and also ensure that competitors are prevented from using some synthetic solutions. These are ones that are usually developed by researchers to increase the purity of the final drug product, maximise its yield and reduce costs associated with it. The process is ordinarily painstakingly slow and time consuming, with a team of scientists conducting experiment after experiment to get to the final product.
To overcome patents in place, the research team ‘froze’ the challenging portions of each target molecule, which forced the computer to substitute unconventional but chemically plausible molecules on the basis of mechanistic rules.
The researchers tested their computer software using some significant commercial medication; linezolid, sitagliptin and panobinostat. Linezolid is a last-resort antibiotic, sitagliptin is an antidiabetic medication and panobinostat is a multiple myloma medication. Each of the drug had different difficulties with regard to their chemical composition.
When the computer program was allowed to run without constraints, it recommended the commercial structure and synthesis. However, when the researchers designated some atoms and bond as untouchable, the program proposed plans that avoided the patented ones.
“By algorithmically locating the key bonds on which patents hinge and propagating them down Chematica’s retrosynthetic trees, we can generate synthetic solutions from alternative yet economical starting materials, achieving a real practical impact,” Prof Grzybowski said.
The ability of the software to ‘dodge’ patents may lead to chemists changing the way they approach patent law and intellectual property.
The research team hope that their software could help pharmaceutical companies in the protection of their intellectual property, and to hasten research into organic chemistry.
“This work illustrates the benefits of pushing chemists to think algorithmically and asking computer scientists to grasp key chemical concepts, delivering chemical artificial intelligence results that matter beyond the confines of academia,” adds co-author Dr Piotr Dittwald, a research fellow with training in mathematics and computer science.
MIT researchers used Bayesian inference, a form of AI, to make computer programs write new programs designed especially for data analysis. The premise is to ease the burden for data scientists who aren't also AI experts themselves.
It's built on arbitrary fixed magical values. The interpretation flow is based on special cases, creating a huge number of exceptions from exceptions from exceptions from rules. Basically the worst case of spaghetti code the world has ever seen. In addition, the condition interpretation is probabilistic, depending only on opinions of the judge, jury or an expert. This of course creates an unpredictable, non-continuous, chaotic system, on which all of our society depends.