Thanks for your recommendation !I am pretty interested in web security partly because I want to start my own start up in two years, and I want to make sure my customer's data is safe.
I am also interested in compilers but just can't bear C++, so I plan to take this course :https://www.coursera.org/learn/nand2tetris2.
It doesn't limit languages you can use .So I plan to write the compiler by Racket(which can also sharpen my functional programming skill).
I am taking this course[1]: Programming Languages. It emphasizes on big ideas behind languages and functional programming which is very interesting and enlightening.You will implement a type checker and interpreter through this course(I am struggling ML's pattern matching now but feel quite pleasant ).
Learn Berkeley sicp (CS 61A) ,it will teach you to write an interpreter, more importantly, through it you will learn the most powerful idea of software engineering :abstraction.
I love psychology!When I was an undergraduate I read a lot of psychology books and take some courses which totally change my life .
I figure out that introduction to psychology is pretty boring to me because it is too broad and not relevant with everyday life ,so I highly recommend to learn two significant branches of psychology: