Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I'm a second year student with my discrete mathematics 2 assignment is to make an automated theorem prover. I have to make a simple prover program that works on Propositional Logic in 4 weeks (assuming that the proof always exist). I've googled so far but the materials there is really hard to understand in 4 weeks. Can anyone recommend me some book/site/open source code that is for beginners or some useful hints to start with? Thank you in advance.
Note: I flagged this to be moved to the Computer Science site because they are much more on top of ATP over there.
It would be nice if you could include what you have looked at and why it does not help you. Then we can figure out what might be better for you. Also, if you have to write a program, then knowing what languages you know will help. Most of what I do with this is done in a functional language such as OCaml or F#, or a logic language such as Prolog or Mercury.
Have you seen "Handbook of Practical Logic and Automated Reasoning" (WorldCat) by John Harrison. I included the (WorldCat) link so you can find the book in a local library as opposed to waiting to buy it which will eat up most of your time.
If you look you will find the OCaml code at the bottom of the page, and F# here and Haskell here.
In case you haven't see the ATP or Proof Assistant at Wikipedia, you might get a lead to some code and papers.
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 2 years ago.
Improve this question
I'm a computer engineering student but i've never programmed in my life (i've only studied physics, chemistry, control systems etc). Since I know a lot more about math than programming languages, and I'm studying logic right now on my own (i read it can be useful for artificial intelligence), i was thinking about learning Prolog as a first programming language. I tried to find some information about it on the internet but i couldn't really find much, all i discovered is that it's not really useful for landing a job but it can give you a different "mindset". Do you think it would be worth to learn it, or it would just be better learning something like C, Python etc?
Thank you!
Prolog is indeed a wonderful language, and it makes you think is a very differnt mode from other languages. As for making it a first, I think that's a bold move, and I suspect it'll make learning more languages a bit of a challenge. If your intent is to learn sofware engineering, I'm very sure you'll eventually learn another one.
I'd start with Python but, since you're curious already, learn it on the side.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed last month.
Improve this question
So I wanted to learn HPC and I couldn't find any resources list.
Of course we have "Awesome HPC" but last update was for 3 years ago.
My main question is how to learn HPC.
what are the prerequisites?
what programming languages should I know?
And if you have any advice I'm all ears.
There are plenty of books about Parallel Computing, Parallel Algorithms, Scientific Computing, OpenMP and MPI; without to mention HPC books.
Some good books are even free and good to start with such as the Victor Eijkhout's HPC book.
With respect to programing languages, C, C++ and FORTRAN are generally used to code HPC applications. CUDA and OpenCL may be good to know for GPU-based programming.
Note that the HPC landscape should not be very different since 3 years, so it is OK to read such tutorials.
I would say it is very much about understanding the principles of computer architecture and from there on you will be able to write efficient code.
First, one has to be able to write good serial code and then you can have a look on parallelizing it.
I'm a big fan of the book "Introduction to High Performance Computing for Scientists and Engineers" from Hager and Wellein. It will give you the full journey from understanding the hardware to writing fast code and finally to make the fast code even faster by parallelizing. By the way, it's from 2010, but all in there still holds ;-)
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I'm good at algorithms but not as good as converting real-time problems and learning them throughly to make it as an algorithm. I would like to know if there is any book/paper that teaches or makes you demystify the situation and formulate it as an algorithm. (Its much like training your mental ability to break the situation and comeup with algorithm in a crisp.)
Showing some of the ways to approach these kinda problems. and any easy learning links/material would help me a lot.
Note: I know SO doesnt allow to ask for the opinion or something vague (I dont mind my Q being downgraded). But I am asking some concrete problem and hope can get some nice info from some of the great minds here.
The word that fits better as a direct answer is "experience". There exists no magical formula to convert a real time problem into some algorithms that solve it. As an analogy, there exist no predefined patterns on how to solve a mathematical problem. It is a mind's task to express the solution, based on some fundamental knowledge and on experience that is accumulated though constant learning.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
I came across the declaration in a software best practices guide that algorithm and code shouldn't get mixed up. I'm not sure what is meant by this? As far as I understand, code is the implementation of the algorithm, isn't is? So, what exactly is meant by this statement? and why it is considered as a good practice?
Thank You!
The context in which the author mentioned would be clearer if you had pasted the surrounding lines.
Though what it would mean to me is, an algorithm is just a clear step-by-step logic that you would use to implement. You would leave out the finer implementation details like selection of the right data structure and other implementation details while you write/design the algorithm.
A good explanation can be found here
An algorithm is a series of steps for solving a problem, completing a task or performing a calculation. Algorithms are usually executed by computer programs but the term can also apply to steps in domains such as mathematics for human problem solving.
Code is a series of steps that machines can execute. In many cases, code is composed in a high level language that is then automatically translated into instructions that machines understand.
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 11 years ago.
Improve this question
This may not be question of programming and people are open to close.
Does anyone has list of questions/problems to solve which helps to improve algorithms skills
may be for interview purpose.
A good option is Project Euler.
In its own description:
Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems.
The motivation for starting Project Euler, and its continuation, is to provide a platform for the inquiring mind to delve into unfamiliar areas and learn new concepts in a fun and recreational context.
This seems like a perfect match...
Try TopCoder. They have held hundreds of algorithm competitions. Their archive contains thousands of problems for practice, including editorials describing the solutions. You can also view other people's submitted source code for the problems.
This will certainly sharpen your algorithm and problem solving skills, which should make you better prepared for algorithmic interview questions.
Fizz-Buzz?