Followings are two prominent simulators available as open-source.
Icarus is still being developed but it can be used for advanced assignments. I am not sure whether it support full ‘synthesis-able subset’ of Verilog. Verilator is more advanced (to my knowledge), it can easily be integrated with C++/SystemC/Matlab.
Have a look at this crazy place also http://www.opencollector.org/
An informative article can be found in Linux Journal about open source softwares used in ‘Electronic design automation’ . Link is here http://www.linuxjournal.com/article/4428